{"version":3,"file":"js/973-518dce247a7ec5af1024.js","mappings":"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","sources":["webpack://avala/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://avala/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://avala/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://avala/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://avala/./node_modules/@babel/runtime/helpers/createClass.js","webpack://avala/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://avala/./node_modules/@babel/runtime/helpers/extends.js","webpack://avala/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://avala/./node_modules/@babel/runtime/helpers/inherits.js","webpack://avala/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://avala/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://avala/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://avala/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://avala/./node_modules/@babel/runtime/helpers/objectSpread.js","webpack://avala/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://avala/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://avala/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://avala/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://avala/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://avala/./node_modules/@babel/runtime/helpers/typeof.js","webpack://avala/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://avala/./node_modules/@mui/icons-material/CheckCircle.js","webpack://avala/./node_modules/@mui/icons-material/Clear.js","webpack://avala/./node_modules/@mui/icons-material/ClearOutlined.js","webpack://avala/./node_modules/@mui/icons-material/CloudUploadOutlined.js","webpack://avala/./node_modules/@mui/icons-material/DeleteOutlineOutlined.js","webpack://avala/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://avala/./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack://avala/./node_modules/attr-accept/dist/es/index.js","webpack://avala/./node_modules/classnames/index.js","webpack://avala/./node_modules/clipboard-polyfill/dist/clipboard-polyfill.esm.js","webpack://avala/./node_modules/lodash/_basePickBy.js","webpack://avala/./node_modules/lodash/_baseSet.js","webpack://avala/./node_modules/lodash/_charsEndIndex.js","webpack://avala/./node_modules/lodash/_charsStartIndex.js","webpack://avala/./node_modules/lodash/_createFind.js","webpack://avala/./node_modules/lodash/chunk.js","webpack://avala/./node_modules/lodash/find.js","webpack://avala/./node_modules/lodash/isNaN.js","webpack://avala/./node_modules/lodash/lowerCase.js","webpack://avala/./node_modules/lodash/negate.js","webpack://avala/./node_modules/lodash/omitBy.js","webpack://avala/./node_modules/lodash/parseInt.js","webpack://avala/./node_modules/lodash/pickBy.js","webpack://avala/./node_modules/lodash/trim.js","webpack://avala/./node_modules/lodash/uniqBy.js","webpack://avala/./node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","webpack://avala/./node_modules/react-dom/server.browser.js","webpack://avala/./node_modules/file-selector/dist/es5/file.js","webpack://avala/./node_modules/file-selector/dist/es5/file-selector.js","webpack://avala/./node_modules/react-dropzone/dist/es/utils/index.js","webpack://avala/./node_modules/react-dropzone/dist/es/index.js","webpack://avala/./node_modules/react-feather/dist/icons/facebook.js","webpack://avala/./node_modules/react-feather/dist/icons/file.js","webpack://avala/./node_modules/react-feather/dist/icons/share-2.js","webpack://avala/./node_modules/react-feather/dist/icons/twitter.js","webpack://avala/./node_modules/react-feather/dist/icons/type.js","webpack://avala/./node_modules/react-feather/dist/icons/upload.js","webpack://avala/./node_modules/react-feather/dist/icons/video.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/Authenticity.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/ComponentRegistry.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/ReactOnRails.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/RenderUtils.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/StoreRegistry.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/buildConsoleReplay.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/clientStartup.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/context.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/createReactOutput.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/handleError.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/isRenderFunction.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/isServerRenderResult.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/reactHydrate.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/reactRender.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/scriptSanitizedVal.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/serverRenderReactComponent.js","webpack://avala/./node_modules/react-on-rails/node_package/lib/supportsReactCreateRoot.js","webpack://avala/./node_modules/react-select/creatable/dist/react-select.esm.js","webpack://avala/./node_modules/react-share/es/EmailShareButton.js","webpack://avala/./node_modules/react-share/es/FacebookShareButton.js","webpack://avala/./node_modules/react-share/es/TwitterShareButton.js","webpack://avala/./node_modules/react-share/es/ShareButton.js","webpack://avala/./node_modules/react-share/es/hocs/createShareButton.js","webpack://avala/./node_modules/react-share/es/utils/assert.js","webpack://avala/./node_modules/react-share/es/utils/objectToGetParams.js","webpack://avala/./node_modules/signature_pad/dist/signature_pad.js","webpack://avala/./node_modules/throttle-debounce/esm/index.js","webpack://avala/./node_modules/react-signature-pad-wrapper/dist/react-signature-pad-wrapper.es.js","webpack://avala/./node_modules/react-web-share/dist/react-web-share.esm.js","webpack://avala/./node_modules/recordrtc/RecordRTC.js","webpack://avala/./node_modules/@stimulus/core/dist/src/event_listener.js","webpack://avala/./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack://avala/./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack://avala/./node_modules/@stimulus/core/dist/src/action.js","webpack://avala/./node_modules/@stimulus/core/dist/src/binding.js","webpack://avala/./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack://avala/./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack://avala/./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack://avala/./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack://avala/./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack://avala/./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack://avala/./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack://avala/./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack://avala/./node_modules/@stimulus/core/dist/src/context.js","webpack://avala/./node_modules/@stimulus/core/dist/src/definition.js","webpack://avala/./node_modules/@stimulus/core/dist/src/module.js","webpack://avala/./node_modules/@stimulus/core/dist/src/data_map.js","webpack://avala/./node_modules/@stimulus/core/dist/src/selectors.js","webpack://avala/./node_modules/@stimulus/core/dist/src/target_set.js","webpack://avala/./node_modules/@stimulus/core/dist/src/scope.js","webpack://avala/./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack://avala/./node_modules/@stimulus/core/dist/src/router.js","webpack://avala/./node_modules/@stimulus/core/dist/src/schema.js","webpack://avala/./node_modules/@stimulus/core/dist/src/application.js","webpack://avala/./node_modules/@stimulus/core/dist/src/target_properties.js","webpack://avala/./node_modules/@stimulus/core/dist/src/controller.js","webpack://avala/./node_modules/swipe-detect/dist/index.js","webpack://avala/./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack://avala/./node_modules/video-react/lib/Manager.js","webpack://avala/./node_modules/video-react/lib/actions/player.js","webpack://avala/./node_modules/video-react/lib/actions/video.js","webpack://avala/./node_modules/video-react/lib/components/Bezel.js","webpack://avala/./node_modules/video-react/lib/components/BigPlayButton.js","webpack://avala/./node_modules/video-react/lib/components/ClickableComponent.js","webpack://avala/./node_modules/video-react/lib/components/LoadingSpinner.js","webpack://avala/./node_modules/video-react/lib/components/Player.js","webpack://avala/./node_modules/video-react/lib/components/PosterImage.js","webpack://avala/./node_modules/video-react/lib/components/Shortcut.js","webpack://avala/./node_modules/video-react/lib/components/Slider.js","webpack://avala/./node_modules/video-react/lib/components/Video.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/ClosedCaptionButton.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/ControlBar.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/ForwardControl.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/ForwardReplayControl.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/FullscreenToggle.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/LoadProgressBar.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/MouseTimeDisplay.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/PlayProgressBar.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/PlayToggle.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/PlaybackRate.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/PlaybackRateMenuButton.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/ProgressControl.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/ReplayControl.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/SeekBar.js","webpack://avala/./node_modules/video-react/lib/components/control-bar/VolumeMenuButton.js","webpack://avala/./node_modules/video-react/lib/components/menu/Menu.js","webpack://avala/./node_modules/video-react/lib/components/menu/MenuButton.js","webpack://avala/./node_modules/video-react/lib/components/menu/MenuItem.js","webpack://avala/./node_modules/video-react/lib/components/popup/Popup.js","webpack://avala/./node_modules/video-react/lib/components/popup/PopupButton.js","webpack://avala/./node_modules/video-react/lib/components/time-controls/CurrentTimeDisplay.js","webpack://avala/./node_modules/video-react/lib/components/time-controls/DurationDisplay.js","webpack://avala/./node_modules/video-react/lib/components/time-controls/RemainingTimeDisplay.js","webpack://avala/./node_modules/video-react/lib/components/time-controls/TimeDivider.js","webpack://avala/./node_modules/video-react/lib/components/volume-control/VolumeBar.js","webpack://avala/./node_modules/video-react/lib/components/volume-control/VolumeLevel.js","webpack://avala/./node_modules/video-react/lib/index.js","webpack://avala/./node_modules/video-react/lib/reducers/index.js","webpack://avala/./node_modules/video-react/lib/reducers/operation.js","webpack://avala/./node_modules/video-react/lib/reducers/player.js","webpack://avala/./node_modules/video-react/lib/utils/browser.js","webpack://avala/./node_modules/video-react/lib/utils/dom.js","webpack://avala/./node_modules/video-react/lib/utils/fullscreen.js","webpack://avala/./node_modules/video-react/lib/utils/index.js"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z\"\n}), 'CheckCircle');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'ClearOutlined');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3M8 13h2.55v3h2.9v-3H16l-4-4z\"\n}), 'CloudUploadOutlined');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z\"\n}), 'DeleteOutlineOutlined');","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form',\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n","export function definitionsFromContext(context) {\n return context.keys()\n .map(function (key) { return definitionForModuleWithContextAndKey(context, key); })\n .filter(function (value) { return value; });\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier: identifier, controllerConstructor: controllerConstructor };\n }\n}\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLGlDQUFpQyxPQUEwQztJQUMvRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUU7U0FDbEIsR0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsb0NBQW9DLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFsRCxDQUFrRCxDQUFDO1NBQzlELE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLENBQWlCLENBQUE7QUFDM0MsQ0FBQztBQUVELDhDQUE4QyxPQUEwQyxFQUFFLEdBQVc7SUFDbkcsSUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0MsSUFBSSxVQUFVLEVBQUU7UUFDZCxPQUFPLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtLQUNsRTtBQUNILENBQUM7QUFFRCwwQ0FBMEMsTUFBd0IsRUFBRSxVQUFrQjtJQUNwRixJQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUE7SUFDNUMsSUFBSSxPQUFPLHFCQUFxQixJQUFJLFVBQVUsRUFBRTtRQUM5QyxPQUFPLEVBQUUsVUFBVSxZQUFBLEVBQUUscUJBQXFCLHVCQUFBLEVBQUUsQ0FBQTtLQUM3QztBQUNILENBQUM7QUFFRCxNQUFNLGtDQUFrQyxHQUFXO0lBQ2pELElBQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xGLElBQUksV0FBVyxFQUFFO1FBQ2YsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0tBQzNEO0FBQ0gsQ0FBQyJ9","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function t(t,e,n,r){return new(n||(n=Promise))(function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(a,c)}u((r=r.apply(t,e||[])).next())})}function e(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1)return a('UA \"Edge\" => assuming success'),[2];if(x(document.body,n))return a(\"copyUsingTempSelection worked\"),[2];if(function(t){var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\"),e.textContent=\"temporary element\",document.body.appendChild(e);var n=x(e,t);return document.body.removeChild(e),n}(n))return a(\"copyUsingTempElem worked\"),[2];if(void 0!==(t=n.getData(s))&&function(t){a(\"copyTextUsingDOM\");var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\");var n=e;e.attachShadow&&(a(\"Using shadow DOM.\"),n=e.attachShadow({mode:\"open\"}));var r=document.createElement(\"span\");r.innerText=t,n.appendChild(r),document.body.appendChild(e),D(r);var o=document.execCommand(\"copy\");return E(),document.body.removeChild(e),o}(t))return a(\"copyTextUsingDOM worked\"),[2];throw new Error(\"Copy command failed.\")})})}function p(n){return t(this,void 0,void 0,function(){return e(this,function(t){return navigator.clipboard&&navigator.clipboard.writeText?(a(\"Using `navigator.clipboard.writeText()`.\"),[2,navigator.clipboard.writeText(n)]):[2,f(T(n))]})})}function v(){return t(this,void 0,void 0,function(){var t;return e(this,function(e){switch(e.label){case 0:return t=T,[4,h()];case 1:return[2,t.apply(void 0,[e.sent()])]}})})}function h(){return t(this,void 0,void 0,function(){return e(this,function(t){if(navigator.clipboard&&navigator.clipboard.readText)return a(\"Using `navigator.clipboard.readText()`.\"),[2,navigator.clipboard.readText()];if(C())return a(\"Reading text using IE strategy.\"),[2,k()];throw new Error(\"Read is not supported in your browser.\")})})}var b=!1;function m(){b||(c&&u('The deprecated default object of `clipboard-polyfill` was called. Please switch to `import * as clipboard from \"clipboard-polyfill\"` and see https://github.com/lgarron/clipboard-polyfill/issues/101 for more info.'),b=!0)}var w={DT:i,setDebugLog:function(t){return m(),l(t)},suppressWarnings:function(){return m(),d()},write:function(n){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,f(n)]})})},writeText:function(n){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,p(n)]})})},read:function(){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,v()]})})},readText:function(){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,h()]})})}},y=function(){this.success=!1};function g(t){var e=new y,n=function(t,e,n){a(\"listener called\"),t.success=!0,e.forEach(function(e,r){var o=n.clipboardData;o.setData(r,e),r===s&&o.getData(r)!==e&&(a(\"setting text/plain failed\"),t.success=!1)}),n.preventDefault()}.bind(this,e,t);document.addEventListener(\"copy\",n);try{document.execCommand(\"copy\")}finally{document.removeEventListener(\"copy\",n)}return e.success}function x(t,e){D(t);var n=g(e);return E(),n}function D(t){var e=document.getSelection();if(e){var n=document.createRange();n.selectNodeContents(t),e.removeAllRanges(),e.addRange(n)}}function E(){var t=document.getSelection();t&&t.removeAllRanges()}function T(t){var e=new i;return e.setData(s,t),e}function C(){return\"undefined\"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData}function k(){return t(this,void 0,void 0,function(){var t;return e(this,function(e){if(\"\"===(t=window.clipboardData.getData(\"Text\")))throw new Error(\"Empty clipboard or could not read plain text from clipboard\");return[2,t]})})}export default w;export{i as DT,v as read,h as readText,l as setDebugLog,d as suppressWarnings,f as write,p as writeText};\n//# sourceMappingURL=clipboard-polyfill.esm.js.map\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsEndIndex;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsStartIndex;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nmodule.exports = lowerCase;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","var root = require('./_root'),\n toString = require('./toString');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeParseInt = root.parseInt;\n\n/**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\nfunction parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n}\n\nmodule.exports = parseInt;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseToString = require('./_baseToString'),\n baseTrim = require('./_baseTrim'),\n castSlice = require('./_castSlice'),\n charsEndIndex = require('./_charsEndIndex'),\n charsStartIndex = require('./_charsStartIndex'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nmodule.exports = trim;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","/** @license React v17.0.2\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),m=require(\"react\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cK;K++)J[K]=K+1;J[15]=0;var oa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pa=Object.prototype.hasOwnProperty,qa={},ra={};\nfunction sa(a){if(pa.call(ra,a))return!0;if(pa.call(qa,a))return!1;if(oa.test(a))return ra[a]=!0;qa[a]=!0;return!1}function ta(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction ua(a,b,c,d){if(null===b||\"undefined\"===typeof b||ta(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function M(a,b,c,d,f,h,t){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=h;this.removeEmptyString=t}var N={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){N[a]=new M(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];N[b]=new M(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){N[a]=new M(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){N[a]=new M(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){N[a]=new M(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){N[a]=new M(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){N[a]=new M(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){N[a]=new M(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){N[a]=new M(a,5,!1,a.toLowerCase(),null,!1,!1)});var va=/[\\-:]([a-z])/g;function wa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(va,\nwa);N[b]=new M(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!1,!1)});\nN.xlinkHref=new M(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!0,!0)});var xa=/[\"'&<>]/;\nfunction O(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=xa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;dV))throw Error(p(301));if(a===P)if(T=!0,a={action:c,next:null},null===U&&(U=new Map),c=U.get(b),void 0===c)U.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Ja(){}\nvar X=null,Ka={readContext:function(a){var b=X.threadID;I(a,b);return a[b]},useContext:function(a){W();var b=X.threadID;I(a,b);return a[b]},useMemo:Ia,useReducer:Ga,useRef:function(a){P=W();R=Ca();var b=R.memoizedState;return null===b?(a={current:a},R.memoizedState=a):b},useState:function(a){return Ga(Fa,a)},useLayoutEffect:function(){},useCallback:function(a,b){return Ia(function(){return a},b)},useImperativeHandle:Ja,useEffect:Ja,useDebugValue:Ja,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[function(a){a()},!1]},useOpaqueIdentifier:function(){return(X.identifierPrefix||\"\")+\"R:\"+(X.uniqueID++).toString(36)},useMutableSource:function(a,b){W();return b(a._source)}},La={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ma(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Na={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oa=l({menuitem:!0},Na),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Pa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Qa=/([A-Z])/g,Ra=/^ms-/,Z=m.Children.toArray,Sa=la.ReactCurrentDispatcher,Ta={listing:!0,pre:!0,textarea:!0},Ua=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Va={},Wa={};function Xa(a){if(void 0===a||null===a)return a;var b=\"\";m.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ya=Object.prototype.hasOwnProperty,Za={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function $a(a,b){if(void 0===a)throw Error(p(152,F(b)||\"Component\"));}\nfunction ab(a,b,c){function d(d,h){var e=h.prototype&&h.prototype.isReactComponent,f=na(h,b,c,e),t=[],g=!1,n={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===t)return null},enqueueReplaceState:function(a,c){g=!0;t=[c]},enqueueSetState:function(a,c){if(null===t)return null;t.push(c)}};if(e){if(e=new h(d.props,f,n),\"function\"===typeof h.getDerivedStateFromProps){var k=h.getDerivedStateFromProps.call(null,d.props,e.state);null!=k&&(e.state=l({},e.state,k))}}else if(P={},e=h(d.props,\nf,n),e=Da(h,d.props,e,f),null==e||null==e.render){a=e;$a(a,h);return}e.props=d.props;e.context=f;e.updater=n;n=e.state;void 0===n&&(e.state=n=null);if(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount)if(\"function\"===typeof e.componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.UNSAFE_componentWillMount(),t.length){n=t;var v=\ng;t=null;g=!1;if(v&&1===n.length)e.state=n[0];else{k=v?n[0]:e.state;var H=!0;for(v=v?1:0;v=g))throw Error(p(304));var e=new Uint16Array(g);e.set(d);J=e;J[0]=c+1;for(d=c;d=e.children.length){var L=e.footer;\"\"!==L&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===e.type)this.currentSelectValue=null;else if(null!=e.type&&null!=e.type.type&&e.type.type.$$typeof===B)this.popProvider(e.type);else if(e.type===D){this.suspenseDepth--;var G=h.pop();if(t){t=!1;var C=e.fallbackFrame;if(!C)throw Error(p(303));this.stack.push(C);h[this.suspenseDepth]+=\"\\x3c!--$!--\\x3e\";continue}else h[this.suspenseDepth]+=\nG}h[this.suspenseDepth]+=L}else{var n=e.children[e.childIndex++],k=\"\";try{k+=this.render(n,e.context,e.domNamespace)}catch(v){if(null!=v&&\"function\"===typeof v.then)throw Error(p(294));throw v;}finally{}h.length<=this.suspenseDepth&&h.push(\"\");h[this.suspenseDepth]+=k}}return h[0]}finally{Sa.current=c,X=b,Ea()}};b.render=function(a,b,f){if(\"string\"===typeof a||\"number\"===typeof a){f=\"\"+a;if(\"\"===f)return\"\";if(this.makeStaticMarkup)return O(f);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+O(f);\nthis.previousWasTextNode=!0;return O(f)}b=ab(a,b,this.threadID);a=b.child;b=b.context;if(null===a||!1===a)return\"\";if(!m.isValidElement(a)){if(null!=a&&null!=a.$$typeof){f=a.$$typeof;if(f===q)throw Error(p(257));throw Error(p(258,f.toString()));}a=Z(a);this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"});return\"\"}var c=a.type;if(\"string\"===typeof c)return this.renderDOM(a,b,f);switch(c){case ka:case ja:case u:case z:case ca:case r:return a=Z(a.props.children),this.stack.push({type:null,\ndomNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\"\";case D:throw Error(p(294));case ia:throw Error(p(343));}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case ba:P={};var d=c.render(a.props,a.ref);d=Da(c.render,a.props,d,a.ref);d=Z(d);this.stack.push({type:null,domNamespace:f,children:d,childIndex:0,context:b,footer:\"\"});return\"\";case da:return a=[m.createElement(c.type,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\n\"\";case B:return c=Z(a.props.children),f={type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"},this.pushProvider(a),this.stack.push(f),\"\";case aa:c=a.type;d=a.props;var g=this.threadID;I(c,g);c=Z(d.children(c[g]));this.stack.push({type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"});return\"\";case ha:throw Error(p(338));case ea:return c=a.type,d=c._init,c=d(c._payload),a=[m.createElement(c,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,\ncontext:b,footer:\"\"}),\"\"}throw Error(p(130,null==c?c:typeof c,\"\"));};b.renderDOM=function(a,b,f){var c=a.type.toLowerCase();f===La.html&&Ma(c);if(!Va.hasOwnProperty(c)){if(!Ua.test(c))throw Error(p(65,c));Va[c]=!0}var d=a.props;if(\"input\"===c)d=l({type:void 0},d,{defaultChecked:void 0,defaultValue:void 0,value:null!=d.value?d.value:d.defaultValue,checked:null!=d.checked?d.checked:d.defaultChecked});else if(\"textarea\"===c){var g=d.value;if(null==g){g=d.defaultValue;var e=d.children;if(null!=e){if(null!=\ng)throw Error(p(92));if(Array.isArray(e)){if(!(1>=e.length))throw Error(p(93));e=e[0]}g=\"\"+e}null==g&&(g=\"\")}d=l({},d,{value:void 0,children:\"\"+g})}else if(\"select\"===c)this.currentSelectValue=null!=d.value?d.value:d.defaultValue,d=l({},d,{value:void 0});else if(\"option\"===c){e=this.currentSelectValue;var L=Xa(d.children);if(null!=e){var G=null!=d.value?d.value+\"\":L;g=!1;if(Array.isArray(e))for(var C=0;C\":(w+=\">\",g=\"\");a:{e=d.dangerouslySetInnerHTML;if(null!=e){if(null!=e.__html){e=e.__html;break a}}else if(e=d.children,\"string\"===typeof e||\"number\"===typeof e){e=O(e);break a}e=null}null!=e?(d=[],Ta.hasOwnProperty(c)&&\"\\n\"===e.charAt(0)&&(w+=\"\\n\"),w+=e):d=Z(d.children);a=a.type;f=null==f||\"http://www.w3.org/1999/xhtml\"===f?Ma(a):\"http://www.w3.org/2000/svg\"===\nf&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":f;this.stack.push({domNamespace:f,type:c,children:d,childIndex:0,context:b,footer:g});this.previousWasTextNode=!1;return w};return a}();exports.renderToNodeStream=function(){throw Error(p(207));};exports.renderToStaticMarkup=function(a,b){a=new bb(a,!0,b);try{return a.read(Infinity)}finally{a.destroy()}};exports.renderToStaticNodeStream=function(){throw Error(p(208));};exports.renderToString=function(a,b){a=new bb(a,!1,b);try{return a.read(Infinity)}finally{a.destroy()}};\nexports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value.dataTransfer);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (dt === null) {\n return [2 /*return*/, []];\n }\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spread(acc, (Array.isArray(files) ? flatten(files) : [files])); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from 'attr-accept'; // Error codes\n\nexport var FILE_INVALID_TYPE = 'file-invalid-type';\nexport var FILE_TOO_LARGE = 'file-too-large';\nexport var FILE_TOO_SMALL = 'file-too-small';\nexport var TOO_MANY_FILES = 'too-many-files';\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(', ')) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? 'byte' : 'bytes')\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? 'byte' : 'bytes')\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: 'Too many files'\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === 'application/x-moz-file' || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === 'function') {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== 'undefined') {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === 'Files' || type === 'application/x-moz-file';\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === 'object' && item !== null && item.kind === 'file';\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return 'showOpenFilePicker' in window;\n}\n/**\n * filePickerOptionsTypes returns the {types} option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n * based on the accept attr (see https://github.com/react-dropzone/attr-accept)\n * E.g: converts ['image/*', 'text/*'] to {'image/*': [], 'text/*': []}\n * @param {string|string[]} accept\n */\n\nexport function filePickerOptionsTypes(accept) {\n accept = typeof accept === 'string' ? accept.split(',') : accept;\n return [{\n description: 'everything',\n // TODO: Need to handle filtering more elegantly than this!\n accept: Array.isArray(accept) // Accept just MIME types as per spec\n // NOTE: accept can be https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers\n ? accept.filter(function (item) {\n return item === 'audio/*' || item === 'video/*' || item === 'image/*' || item === 'text/*' || /\\w+\\/[-+.\\w]+/g.test(item);\n }).reduce(function (a, b) {\n return _objectSpread(_objectSpread({}, a), {}, _defineProperty({}, b, []));\n }, {}) : {}\n }];\n}","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromEvent } from 'file-selector';\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, filePickerOptionsTypes, canUseFileSystemAccessAPI, isEvtWithFiles, isIeOrEdge, isPropagationStopped, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from './utils/index';\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
\n * \n *

Drag 'n' drop some files here, or click to select files

\n *
\n * )}\n *
\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = 'Dropzone'; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function\n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
\n * \n *

Drag and drop some files here, or click to select files

\n *
\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$options.onFileDialogOpen,\n useFsAccessApi = _defaultProps$options.useFsAccessApi,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === 'function' ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === 'function' ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles; // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: 'closeDialog'\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n if (useFsAccessApi && canUseFileSystemAccessAPI()) {\n return function () {};\n }\n\n window.addEventListener('focus', onWindowFocus, false);\n return function () {\n window.removeEventListener('focus', onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, useFsAccessApi]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: 'setDraggedFiles'\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = 'copy';\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: 'setDraggedFiles',\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: 'setFiles'\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, accept, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n });\n }\n\n dispatch({\n type: 'reset'\n });\n }, [getFilesFromEvent, setFiles, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n if (useFsAccessApi && canUseFileSystemAccessAPI()) {\n dispatch({\n type: 'openDialog'\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: filePickerOptionsTypes(accept)\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n return setFiles(files, null);\n }).catch(function (e) {\n return onFileDialogCancelCb(e);\n }).finally(function () {\n return dispatch({\n type: 'closeDialog'\n });\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: 'openDialog'\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, accept, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, inputRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: 'focus'\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: 'blur'\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [inputRef, noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? 'ref' : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === 'string' && role !== '' ? role : 'button'\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: 'file',\n style: {\n display: 'none'\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n autoComplete: 'off',\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case 'focus':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case 'blur':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case 'openDialog':\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case 'closeDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case 'setDraggedFiles':\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case 'setFiles':\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case 'reset':\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from './utils';","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Facebook = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"\n }));\n});\nFacebook.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFacebook.displayName = 'Facebook';\nexport default Facebook;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar File = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"13 2 13 9 20 9\"\n }));\n});\nFile.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFile.displayName = 'File';\nexport default File;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Share2 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"5\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"6\",\n cy: \"12\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"19\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"8.59\",\n y1: \"13.51\",\n x2: \"15.42\",\n y2: \"17.49\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"15.41\",\n y1: \"6.51\",\n x2: \"8.59\",\n y2: \"10.49\"\n }));\n});\nShare2.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nShare2.displayName = 'Share2';\nexport default Share2;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Twitter = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"\n }));\n});\nTwitter.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nTwitter.displayName = 'Twitter';\nexport default Twitter;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Type = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"4 7 4 4 20 4 20 7\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"9\",\n y1: \"20\",\n x2: \"15\",\n y2: \"20\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"4\",\n x2: \"12\",\n y2: \"20\"\n }));\n});\nType.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nType.displayName = 'Type';\nexport default Type;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Upload = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"17 8 12 3 7 8\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"3\",\n x2: \"12\",\n y2: \"15\"\n }));\n});\nUpload.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nUpload.displayName = 'Upload';\nexport default Upload;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Video = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"23 7 16 12 23 17 23 7\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"1\",\n y: \"5\",\n width: \"15\",\n height: \"14\",\n rx: \"2\",\n ry: \"2\"\n }));\n});\nVideo.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nVideo.displayName = 'Video';\nexport default Video;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = {\n authenticityToken: function () {\n var token = document.querySelector('meta[name=\"csrf-token\"]');\n if (token && (token instanceof window.HTMLMetaElement)) {\n return token.content;\n }\n return null;\n },\n authenticityHeaders: function (otherHeaders) {\n if (otherHeaders === void 0) { otherHeaders = {}; }\n return Object.assign(otherHeaders, {\n 'X-CSRF-Token': this.authenticityToken(),\n 'X-Requested-With': 'XMLHttpRequest',\n });\n },\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isRenderFunction_1 = __importDefault(require(\"./isRenderFunction\"));\nvar registeredComponents = new Map();\nexports.default = {\n /**\n * @param components { component1: component1, component2: component2, etc. }\n */\n register: function (components) {\n Object.keys(components).forEach(function (name) {\n if (registeredComponents.has(name)) {\n console.warn('Called register for component that is already registered', name);\n }\n var component = components[name];\n if (!component) {\n throw new Error(\"Called register with null component named \" + name);\n }\n var renderFunction = isRenderFunction_1.default(component);\n var isRenderer = renderFunction && component.length === 3;\n registeredComponents.set(name, {\n name: name,\n component: component,\n renderFunction: renderFunction,\n isRenderer: isRenderer,\n });\n });\n },\n /**\n * @param name\n * @returns { name, component, isRenderFunction, isRenderer }\n */\n get: function (name) {\n if (registeredComponents.has(name)) {\n return registeredComponents.get(name);\n }\n var keys = Array.from(registeredComponents.keys()).join(', ');\n throw new Error(\"Could not find component registered with name \" + name + \". Registered component names include [ \" + keys + \" ]. Maybe you forgot to register the component?\");\n },\n /**\n * Get a Map containing all registered components. Useful for debugging.\n * @returns Map where key is the component name and values are the\n * { name, component, renderFunction, isRenderer}\n */\n components: function () {\n return registeredComponents;\n },\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ClientStartup = __importStar(require(\"./clientStartup\"));\nvar handleError_1 = __importDefault(require(\"./handleError\"));\nvar ComponentRegistry_1 = __importDefault(require(\"./ComponentRegistry\"));\nvar StoreRegistry_1 = __importDefault(require(\"./StoreRegistry\"));\nvar serverRenderReactComponent_1 = __importDefault(require(\"./serverRenderReactComponent\"));\nvar buildConsoleReplay_1 = __importDefault(require(\"./buildConsoleReplay\"));\nvar createReactOutput_1 = __importDefault(require(\"./createReactOutput\"));\nvar Authenticity_1 = __importDefault(require(\"./Authenticity\"));\nvar context_1 = __importDefault(require(\"./context\"));\nvar reactHydrate_1 = __importDefault(require(\"./reactHydrate\"));\nvar reactRender_1 = __importDefault(require(\"./reactRender\"));\nvar ctx = context_1.default();\nif (ctx === undefined) {\n throw new Error(\"The context (usually Window or NodeJS's Global) is undefined.\");\n}\nvar DEFAULT_OPTIONS = {\n traceTurbolinks: false,\n turbo: false,\n};\nctx.ReactOnRails = {\n options: {},\n /**\n * Main entry point to using the react-on-rails npm package. This is how Rails will be able to\n * find you components for rendering.\n * @param components (key is component name, value is component)\n */\n register: function (components) {\n ComponentRegistry_1.default.register(components);\n },\n /**\n * Allows registration of store generators to be used by multiple react components on one Rails\n * view. store generators are functions that take one arg, props, and return a store. Note that\n * the setStore API is different in that it's the actual store hydrated with props.\n * @param stores (keys are store names, values are the store generators)\n */\n registerStore: function (stores) {\n if (!stores) {\n throw new Error('Called ReactOnRails.registerStores with a null or undefined, rather than ' +\n 'an Object with keys being the store names and the values are the store generators.');\n }\n StoreRegistry_1.default.register(stores);\n },\n /**\n * Allows retrieval of the store by name. This store will be hydrated by any Rails form props.\n * Pass optional param throwIfMissing = false if you want to use this call to get back null if the\n * store with name is not registered.\n * @param name\n * @param throwIfMissing Defaults to true. Set to false to have this call return undefined if\n * there is no store with the given name.\n * @returns Redux Store, possibly hydrated\n */\n getStore: function (name, throwIfMissing) {\n if (throwIfMissing === void 0) { throwIfMissing = true; }\n return StoreRegistry_1.default.getStore(name, throwIfMissing);\n },\n /**\n * Set options for ReactOnRails, typically before you call ReactOnRails.register\n * Available Options:\n * `traceTurbolinks: true|false Gives you debugging messages on Turbolinks events\n * `turbo: true|false Turbo (the follower of Turbolinks) events will be registered, if set to true.\n */\n setOptions: function (newOptions) {\n if (typeof newOptions.traceTurbolinks !== 'undefined') {\n this.options.traceTurbolinks = newOptions.traceTurbolinks;\n // eslint-disable-next-line no-param-reassign\n delete newOptions.traceTurbolinks;\n }\n if (typeof newOptions.turbo !== 'undefined') {\n this.options.turbo = newOptions.turbo;\n // eslint-disable-next-line no-param-reassign\n delete newOptions.turbo;\n }\n if (Object.keys(newOptions).length > 0) {\n throw new Error(\"Invalid options passed to ReactOnRails.options: \" + JSON.stringify(newOptions));\n }\n },\n /**\n * Allow directly calling the page loaded script in case the default events that trigger react\n * rendering are not sufficient, such as when loading JavaScript asynchronously with TurboLinks:\n * More details can be found here:\n * https://github.com/shakacode/react_on_rails/blob/master/docs/additional-reading/turbolinks.md\n */\n reactOnRailsPageLoaded: function () {\n ClientStartup.reactOnRailsPageLoaded();\n },\n /**\n * Returns CSRF authenticity token inserted by Rails csrf_meta_tags\n * @returns String or null\n */\n authenticityToken: function () {\n return Authenticity_1.default.authenticityToken();\n },\n /**\n * Returns header with csrf authenticity token and XMLHttpRequest\n * @param {*} other headers\n * @returns {*} header\n */\n authenticityHeaders: function (otherHeaders) {\n if (otherHeaders === void 0) { otherHeaders = {}; }\n return Authenticity_1.default.authenticityHeaders(otherHeaders);\n },\n // /////////////////////////////////////////////////////////////////////////////\n // INTERNALLY USED APIs\n // /////////////////////////////////////////////////////////////////////////////\n /**\n * Retrieve an option by key.\n * @param key\n * @returns option value\n */\n option: function (key) {\n return this.options[key];\n },\n /**\n * Allows retrieval of the store generator by name. This is used internally by ReactOnRails after\n * a rails form loads to prepare stores.\n * @param name\n * @returns Redux Store generator function\n */\n getStoreGenerator: function (name) {\n return StoreRegistry_1.default.getStoreGenerator(name);\n },\n /**\n * Allows saving the store populated by Rails form props. Used internally by ReactOnRails.\n * @param name\n * @returns Redux Store, possibly hydrated\n */\n setStore: function (name, store) {\n return StoreRegistry_1.default.setStore(name, store);\n },\n /**\n * Clears hydratedStores to avoid accidental usage of wrong store hydrated in previous/parallel\n * request.\n */\n clearHydratedStores: function () {\n StoreRegistry_1.default.clearHydratedStores();\n },\n /**\n * ReactOnRails.render(\"HelloWorldApp\", {name: \"Stranger\"}, 'app');\n *\n * Does this:\n * ReactDOM.render(React.createElement(HelloWorldApp, {name: \"Stranger\"}),\n * document.getElementById('app'))\n *\n * @param name Name of your registered component\n * @param props Props to pass to your component\n * @param domNodeId\n * @param hydrate Pass truthy to update server rendered html. Default is falsy\n * @returns {virtualDomElement} Reference to your component's backing instance\n */\n render: function (name, props, domNodeId, hydrate) {\n var componentObj = ComponentRegistry_1.default.get(name);\n var reactElement = createReactOutput_1.default({ componentObj: componentObj, props: props, domNodeId: domNodeId });\n var render = hydrate ? reactHydrate_1.default : reactRender_1.default;\n // eslint-disable-next-line react/no-render-return-value\n return render(document.getElementById(domNodeId), reactElement);\n },\n /**\n * Get the component that you registered\n * @param name\n * @returns {name, component, renderFunction, isRenderer}\n */\n getComponent: function (name) {\n return ComponentRegistry_1.default.get(name);\n },\n /**\n * Used by server rendering by Rails\n * @param options\n */\n serverRenderReactComponent: function (options) {\n return serverRenderReactComponent_1.default(options);\n },\n /**\n * Used by Rails to catch errors in rendering\n * @param options\n */\n handleError: function (options) {\n return handleError_1.default(options);\n },\n /**\n * Used by Rails server rendering to replay console messages.\n */\n buildConsoleReplay: function () {\n return buildConsoleReplay_1.default();\n },\n /**\n * Get an Object containing all registered components. Useful for debugging.\n * @returns {*}\n */\n registeredComponents: function () {\n return ComponentRegistry_1.default.components();\n },\n /**\n * Get an Object containing all registered store generators. Useful for debugging.\n * @returns {*}\n */\n storeGenerators: function () {\n return StoreRegistry_1.default.storeGenerators();\n },\n /**\n * Get an Object containing all hydrated stores. Useful for debugging.\n * @returns {*}\n */\n stores: function () {\n return StoreRegistry_1.default.stores();\n },\n resetOptions: function () {\n this.options = Object.assign({}, DEFAULT_OPTIONS);\n },\n};\nctx.ReactOnRails.resetOptions();\nClientStartup.clientStartup(ctx);\nexports.default = ctx.ReactOnRails;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = {\n wrapInScriptTags: function (scriptId, scriptBody) {\n if (!scriptBody) {\n return '';\n }\n return \"\\n\";\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar registeredStoreGenerators = new Map();\nvar hydratedStores = new Map();\nexports.default = {\n /**\n * Register a store generator, a function that takes props and returns a store.\n * @param storeGenerators { name1: storeGenerator1, name2: storeGenerator2 }\n */\n register: function (storeGenerators) {\n Object.keys(storeGenerators).forEach(function (name) {\n if (registeredStoreGenerators.has(name)) {\n console.warn('Called registerStore for store that is already registered', name);\n }\n var store = storeGenerators[name];\n if (!store) {\n throw new Error('Called ReactOnRails.registerStores with a null or undefined as a value ' +\n (\"for the store generator with key \" + name + \".\"));\n }\n registeredStoreGenerators.set(name, store);\n });\n },\n /**\n * Used by components to get the hydrated store which contains props.\n * @param name\n * @param throwIfMissing Defaults to true. Set to false to have this call return undefined if\n * there is no store with the given name.\n * @returns Redux Store, possibly hydrated\n */\n getStore: function (name, throwIfMissing) {\n if (throwIfMissing === void 0) { throwIfMissing = true; }\n if (hydratedStores.has(name)) {\n return hydratedStores.get(name);\n }\n var storeKeys = Array.from(hydratedStores.keys()).join(', ');\n if (storeKeys.length === 0) {\n var msg = \"There are no stores hydrated and you are requesting the store \" + name + \".\\nThis can happen if you are server rendering and either:\\n1. You do not call redux_store near the top of your controller action's view (not the layout)\\n and before any call to react_component.\\n2. You do not render redux_store_hydration_data anywhere on your page.\";\n throw new Error(msg);\n }\n if (throwIfMissing) {\n console.log('storeKeys', storeKeys);\n throw new Error(\"Could not find hydrated store with name '\" + name + \"'. \" +\n (\"Hydrated store names include [\" + storeKeys + \"].\"));\n }\n return undefined;\n },\n /**\n * Internally used function to get the store creator that was passed to `register`.\n * @param name\n * @returns storeCreator with given name\n */\n getStoreGenerator: function (name) {\n if (registeredStoreGenerators.has(name)) {\n return registeredStoreGenerators.get(name);\n }\n var storeKeys = Array.from(registeredStoreGenerators.keys()).join(', ');\n throw new Error(\"Could not find store registered with name '\" + name + \"'. Registered store \" +\n (\"names include [ \" + storeKeys + \" ]. Maybe you forgot to register the store?\"));\n },\n /**\n * Internally used function to set the hydrated store after a Rails page is loaded.\n * @param name\n * @param store (not the storeGenerator, but the hydrated store)\n */\n setStore: function (name, store) {\n hydratedStores.set(name, store);\n },\n /**\n * Internally used function to completely clear hydratedStores Map.\n */\n clearHydratedStores: function () {\n hydratedStores.clear();\n },\n /**\n * Get a Map containing all registered store generators. Useful for debugging.\n * @returns Map where key is the component name and values are the store generators.\n */\n storeGenerators: function () {\n return registeredStoreGenerators;\n },\n /**\n * Get a Map containing all hydrated stores. Useful for debugging.\n * @returns Map where key is the component name and values are the hydrated stores.\n */\n stores: function () {\n return hydratedStores;\n },\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.consoleReplay = void 0;\nvar RenderUtils_1 = __importDefault(require(\"./RenderUtils\"));\nvar scriptSanitizedVal_1 = __importDefault(require(\"./scriptSanitizedVal\"));\nfunction consoleReplay() {\n // console.history is a global polyfill used in server rendering.\n // $FlowFixMe\n if (!(console.history instanceof Array)) {\n return '';\n }\n var lines = console.history.map(function (msg) {\n var stringifiedList = msg.arguments.map(function (arg) {\n var val;\n try {\n val = (typeof arg === 'string' || arg instanceof String) ? arg : JSON.stringify(arg);\n if (val === undefined) {\n val = 'undefined';\n }\n }\n catch (e) {\n val = e.message + \": \" + arg;\n }\n return scriptSanitizedVal_1.default(val);\n });\n return \"console.\" + msg.level + \".apply(console, \" + JSON.stringify(stringifiedList) + \");\";\n });\n return lines.join('\\n');\n}\nexports.consoleReplay = consoleReplay;\nfunction buildConsoleReplay() {\n return RenderUtils_1.default.wrapInScriptTags('consoleReplayLog', consoleReplay());\n}\nexports.default = buildConsoleReplay;\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clientStartup = exports.reactOnRailsPageLoaded = void 0;\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nvar createReactOutput_1 = __importDefault(require(\"./createReactOutput\"));\nvar isServerRenderResult_1 = require(\"./isServerRenderResult\");\nvar reactHydrate_1 = __importDefault(require(\"./reactHydrate\"));\nvar reactRender_1 = __importDefault(require(\"./reactRender\"));\nvar REACT_ON_RAILS_STORE_ATTRIBUTE = 'data-js-react-on-rails-store';\nfunction findContext() {\n if (typeof window.ReactOnRails !== 'undefined') {\n return window;\n }\n else if (typeof ReactOnRails !== 'undefined') {\n return global;\n }\n throw new Error(\"ReactOnRails is undefined in both global and window namespaces.\\n \");\n}\nfunction debugTurbolinks() {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n if (!window) {\n return;\n }\n var context = findContext();\n if (context.ReactOnRails && context.ReactOnRails.option('traceTurbolinks')) {\n console.log.apply(console, __spreadArray(['TURBO:'], msg));\n }\n}\nfunction turbolinksInstalled() {\n return (typeof Turbolinks !== 'undefined');\n}\nfunction turboInstalled() {\n var context = findContext();\n if (context.ReactOnRails) {\n return context.ReactOnRails.option('turbo') === true;\n }\n return false;\n}\nfunction reactOnRailsHtmlElements() {\n return document.getElementsByClassName('js-react-on-rails-component');\n}\nfunction forEachReactOnRailsComponentInitialize(fn, railsContext) {\n var els = reactOnRailsHtmlElements();\n for (var i = 0; i < els.length; i += 1) {\n fn(els[i], railsContext);\n }\n}\nfunction initializeStore(el, railsContext) {\n var context = findContext();\n var name = el.getAttribute(REACT_ON_RAILS_STORE_ATTRIBUTE) || \"\";\n var props = (el.textContent !== null) ? JSON.parse(el.textContent) : {};\n var storeGenerator = context.ReactOnRails.getStoreGenerator(name);\n var store = storeGenerator(props, railsContext);\n context.ReactOnRails.setStore(name, store);\n}\nfunction forEachStore(railsContext) {\n var els = document.querySelectorAll(\"[\" + REACT_ON_RAILS_STORE_ATTRIBUTE + \"]\");\n for (var i = 0; i < els.length; i += 1) {\n initializeStore(els[i], railsContext);\n }\n}\nfunction turbolinksVersion5() {\n return (typeof Turbolinks.controller !== 'undefined');\n}\nfunction turbolinksSupported() {\n return Turbolinks.supported;\n}\nfunction delegateToRenderer(componentObj, props, railsContext, domNodeId, trace) {\n var name = componentObj.name, component = componentObj.component, isRenderer = componentObj.isRenderer;\n if (isRenderer) {\n if (trace) {\n console.log(\"DELEGATING TO RENDERER \" + name + \" for dom node with id: \" + domNodeId + \" with props, railsContext:\", props, railsContext);\n }\n component(props, railsContext, domNodeId);\n return true;\n }\n return false;\n}\nfunction domNodeIdForEl(el) {\n return el.getAttribute('data-dom-id') || \"\";\n}\n/**\n * Used for client rendering by ReactOnRails. Either calls ReactDOM.hydrate, ReactDOM.render, or\n * delegates to a renderer registered by the user.\n * @param el\n */\nfunction render(el, railsContext) {\n var context = findContext();\n // This must match lib/react_on_rails/helper.rb\n var name = el.getAttribute('data-component-name') || \"\";\n var domNodeId = domNodeIdForEl(el);\n var props = (el.textContent !== null) ? JSON.parse(el.textContent) : {};\n var trace = el.getAttribute('data-trace') === \"true\";\n try {\n var domNode = document.getElementById(domNodeId);\n if (domNode) {\n var componentObj = context.ReactOnRails.getComponent(name);\n if (delegateToRenderer(componentObj, props, railsContext, domNodeId, trace)) {\n return;\n }\n // Hydrate if available and was server rendered\n // @ts-expect-error potentially present if React 18 or greater\n var shouldHydrate = !!(react_dom_1.default.hydrate || react_dom_1.default.hydrateRoot) && !!domNode.innerHTML;\n var reactElementOrRouterResult = createReactOutput_1.default({\n componentObj: componentObj,\n props: props,\n domNodeId: domNodeId,\n trace: trace,\n railsContext: railsContext,\n shouldHydrate: shouldHydrate,\n });\n if (isServerRenderResult_1.isServerRenderHash(reactElementOrRouterResult)) {\n throw new Error(\"You returned a server side type of react-router error: \" + JSON.stringify(reactElementOrRouterResult) + \"\\nYou should return a React.Component always for the client side entry point.\");\n }\n else if (shouldHydrate) {\n reactHydrate_1.default(domNode, reactElementOrRouterResult);\n }\n else {\n reactRender_1.default(domNode, reactElementOrRouterResult);\n }\n }\n }\n catch (e) {\n e.message = \"ReactOnRails encountered an error while rendering component: \" + name + \".\\n\" +\n (\"Original message: \" + e.message);\n throw e;\n }\n}\nfunction parseRailsContext() {\n var el = document.getElementById('js-react-on-rails-context');\n if (!el) {\n // The HTML page will not have an element with ID 'js-react-on-rails-context' if there are no\n // react on rails components\n return null;\n }\n if (!el.textContent) {\n throw new Error(\"The HTML element with ID 'js-react-on-rails-context' has no textContent\");\n }\n return JSON.parse(el.textContent);\n}\nfunction reactOnRailsPageLoaded() {\n debugTurbolinks('reactOnRailsPageLoaded');\n var railsContext = parseRailsContext();\n // If no react on rails components\n if (!railsContext)\n return;\n forEachStore(railsContext);\n forEachReactOnRailsComponentInitialize(render, railsContext);\n}\nexports.reactOnRailsPageLoaded = reactOnRailsPageLoaded;\nfunction unmount(el) {\n var domNodeId = domNodeIdForEl(el);\n var domNode = document.getElementById(domNodeId);\n if (domNode === null) {\n return;\n }\n try {\n react_dom_1.default.unmountComponentAtNode(domNode);\n }\n catch (e) {\n console.info(\"Caught error calling unmountComponentAtNode: \" + e.message + \" for domNode\", domNode, e);\n }\n}\nfunction reactOnRailsPageUnloaded() {\n debugTurbolinks('reactOnRailsPageUnloaded');\n var els = reactOnRailsHtmlElements();\n for (var i = 0; i < els.length; i += 1) {\n unmount(els[i]);\n }\n}\nfunction renderInit() {\n // Install listeners when running on the client (browser).\n // We must do this check for turbolinks AFTER the document is loaded because we load the\n // Webpack bundles first.\n if ((!turbolinksInstalled() || !turbolinksSupported()) && !turboInstalled()) {\n debugTurbolinks('NOT USING TURBOLINKS: calling reactOnRailsPageLoaded');\n reactOnRailsPageLoaded();\n return;\n }\n if (turboInstalled()) {\n debugTurbolinks('USING TURBO: document added event listeners ' +\n 'turbo:before-render and turbo:render.');\n document.addEventListener('turbo:before-render', reactOnRailsPageUnloaded);\n document.addEventListener('turbo:render', reactOnRailsPageLoaded);\n reactOnRailsPageLoaded();\n }\n else if (turbolinksVersion5()) {\n debugTurbolinks('USING TURBOLINKS 5: document added event listeners ' +\n 'turbolinks:before-render and turbolinks:render.');\n document.addEventListener('turbolinks:before-render', reactOnRailsPageUnloaded);\n document.addEventListener('turbolinks:render', reactOnRailsPageLoaded);\n reactOnRailsPageLoaded();\n }\n else {\n debugTurbolinks('USING TURBOLINKS 2: document added event listeners page:before-unload and ' +\n 'page:change.');\n document.addEventListener('page:before-unload', reactOnRailsPageUnloaded);\n document.addEventListener('page:change', reactOnRailsPageLoaded);\n }\n}\nfunction isWindow(context) {\n return context.document !== undefined;\n}\nfunction clientStartup(context) {\n // Check if server rendering\n if (!isWindow(context)) {\n return;\n }\n var document = context.document;\n // Tried with a file local variable, but the install handler gets called twice.\n // eslint-disable-next-line no-underscore-dangle\n if (context.__REACT_ON_RAILS_EVENT_HANDLERS_RAN_ONCE__) {\n return;\n }\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n context.__REACT_ON_RAILS_EVENT_HANDLERS_RAN_ONCE__ = true;\n debugTurbolinks('Adding DOMContentLoaded event to install event listeners.');\n // So long as the document is not loading, we can assume:\n // The document has finished loading and the document has been parsed\n // but sub-resources such as images, stylesheets and frames are still loading.\n // If lazy asynch loading is used, such as with loadable-components, then the init\n // function will install some handler that will properly know when to do hyrdation.\n if (document.readyState !== 'loading') {\n window.setTimeout(renderInit);\n }\n else {\n document.addEventListener('DOMContentLoaded', renderInit);\n }\n}\nexports.clientStartup = clientStartup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Get the context, be it window or global\n * @returns {boolean|Window|*|context}\n */\nfunction context() {\n return ((typeof window !== 'undefined') && window) ||\n ((typeof global !== 'undefined') && global) ||\n this;\n}\nexports.default = context;\n","\"use strict\";\n/* eslint-disable react/prop-types */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar isServerRenderResult_1 = require(\"./isServerRenderResult\");\n/**\n * Logic to either call the renderFunction or call React.createElement to get the\n * React.Component\n * @param options\n * @param options.componentObj\n * @param options.props\n * @param options.domNodeId\n * @param options.trace\n * @param options.location\n * @returns {ReactElement}\n */\nfunction createReactOutput(_a) {\n var componentObj = _a.componentObj, props = _a.props, railsContext = _a.railsContext, domNodeId = _a.domNodeId, trace = _a.trace, shouldHydrate = _a.shouldHydrate;\n var name = componentObj.name, component = componentObj.component, renderFunction = componentObj.renderFunction;\n if (trace) {\n if (railsContext && railsContext.serverSide) {\n console.log(\"RENDERED \" + name + \" to dom node with id: \" + domNodeId);\n }\n else if (shouldHydrate) {\n console.log(\"HYDRATED \" + name + \" in dom node with id: \" + domNodeId + \" using props, railsContext:\", props, railsContext);\n }\n else {\n console.log(\"RENDERED \" + name + \" to dom node with id: \" + domNodeId + \" with props, railsContext:\", props, railsContext);\n }\n }\n if (renderFunction) {\n // Let's invoke the function to get the result\n if (trace) {\n console.log(name + \" is a renderFunction\");\n }\n var renderFunctionResult = component(props, railsContext);\n if (isServerRenderResult_1.isServerRenderHash(renderFunctionResult)) {\n // We just return at this point, because calling function knows how to handle this case and\n // we can't call React.createElement with this type of Object.\n return renderFunctionResult;\n }\n if (isServerRenderResult_1.isPromise(renderFunctionResult)) {\n // We just return at this point, because calling function knows how to handle this case and\n // we can't call React.createElement with this type of Object.\n return renderFunctionResult;\n }\n if (react_1.default.isValidElement(renderFunctionResult)) {\n // If already a ReactElement, then just return it.\n console.error(\"Warning: ReactOnRails: Your registered render-function (ReactOnRails.register) for \" + name + \"\\nincorrectly returned a React Element (JSX). Instead, return a React Function Component by\\nwrapping your JSX in a function. ReactOnRails v13 will throw error on this, as React Hooks do not\\nwork if you return JSX. Update by wrapping the result JSX of \" + name + \" in a fat arrow function.\");\n return renderFunctionResult;\n }\n // If a component, then wrap in an element\n var reactComponent = renderFunctionResult;\n return react_1.default.createElement(reactComponent, props);\n }\n // else\n return react_1.default.createElement(component, props);\n}\nexports.default = createReactOutput;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importDefault(require(\"react\"));\nvar server_1 = __importDefault(require(\"react-dom/server\"));\nfunction handleRenderFunctionIssue(options) {\n var e = options.e, name = options.name;\n var msg = '';\n if (name) {\n var lastLine = 'A Render-Function takes a single arg of props (and the location for react-router) ' +\n 'and returns a ReactElement.';\n var shouldBeRenderFunctionError = \"ERROR: ReactOnRails is incorrectly detecting Render-Function to be false. The React\\ncomponent '\" + name + \"' seems to be a Render-Function.\\n\" + lastLine;\n var reMatchShouldBeGeneratorError = /Can't add property context, object is not extensible/;\n if (reMatchShouldBeGeneratorError.test(e.message)) {\n msg += shouldBeRenderFunctionError + \"\\n\\n\";\n console.error(shouldBeRenderFunctionError);\n }\n shouldBeRenderFunctionError =\n \"ERROR: ReactOnRails is incorrectly detecting renderFunction to be true, but the React\\ncomponent '\" + name + \"' is not a Render-Function.\\n\" + lastLine;\n var reMatchShouldNotBeGeneratorError = /Cannot call a class as a function/;\n if (reMatchShouldNotBeGeneratorError.test(e.message)) {\n msg += shouldBeRenderFunctionError + \"\\n\\n\";\n console.error(shouldBeRenderFunctionError);\n }\n }\n return msg;\n}\nvar handleError = function (options) {\n var e = options.e, jsCode = options.jsCode, serverSide = options.serverSide;\n console.error('Exception in rendering!');\n var msg = handleRenderFunctionIssue(options);\n if (jsCode) {\n console.error(\"JS code was: \" + jsCode);\n }\n if (e.fileName) {\n console.error(\"location: \" + e.fileName + \":\" + e.lineNumber);\n }\n console.error(\"message: \" + e.message);\n console.error(\"stack: \" + e.stack);\n if (serverSide) {\n msg += \"Exception in rendering!\\n\" + (e.fileName ? \"\\nlocation: \" + e.fileName + \":\" + e.lineNumber : '') + \"\\nMessage: \" + e.message + \"\\n\\n\" + e.stack;\n var reactElement = react_1.default.createElement('pre', null, msg);\n return server_1.default.renderToString(reactElement);\n }\n return \"undefined\";\n};\nexports.default = handleError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Used to determine we'll call be calling React.createElement on the component of if this is a\n * Render-Function used return a function that takes props to return a React element\n * @param component\n * @returns {boolean}\n */\nfunction isRenderFunction(component) {\n // No for es5 or es6 React Component\n if (component.prototype &&\n component.prototype.isReactComponent) {\n return false;\n }\n if (component.renderFunction) {\n return true;\n }\n // If zero or one args, then we know that this is a regular function that will\n // return a React component\n if (component.length >= 2) {\n return true;\n }\n return false;\n}\nexports.default = isRenderFunction;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromise = exports.isServerRenderHash = void 0;\nfunction isServerRenderHash(testValue) {\n return !!(testValue.renderedHtml ||\n testValue.redirectLocation ||\n testValue.routeError ||\n testValue.error);\n}\nexports.isServerRenderHash = isServerRenderHash;\nfunction isPromise(testValue) {\n return !!(testValue.then);\n}\nexports.isPromise = isPromise;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nvar supportsReactCreateRoot_1 = __importDefault(require(\"./supportsReactCreateRoot\"));\nfunction reactHydrate(domNode, reactElement) {\n if (supportsReactCreateRoot_1.default) {\n // @ts-expect-error potentially present if React 18 or greater\n return react_dom_1.default.hydrateRoot(domNode, reactElement);\n }\n return react_dom_1.default.hydrate(reactElement, domNode);\n}\nexports.default = reactHydrate;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nvar supportsReactCreateRoot_1 = __importDefault(require(\"./supportsReactCreateRoot\"));\nfunction reactRender(domNode, reactElement) {\n if (supportsReactCreateRoot_1.default) {\n // @ts-expect-error potentially present if React 18 or greater\n var root = react_dom_1.default.createRoot(domNode);\n root.render(reactElement);\n return root;\n }\n // eslint-disable-next-line react/no-render-return-value\n return react_dom_1.default.render(reactElement, domNode);\n}\nexports.default = reactRender;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = (function (val) {\n // Replace closing\n var re = /<\\/\\W*script/gi;\n return val.replace(re, '(/script');\n});\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar server_1 = __importDefault(require(\"react-dom/server\"));\nvar ComponentRegistry_1 = __importDefault(require(\"./ComponentRegistry\"));\nvar createReactOutput_1 = __importDefault(require(\"./createReactOutput\"));\nvar isServerRenderResult_1 = require(\"./isServerRenderResult\");\nvar buildConsoleReplay_1 = __importDefault(require(\"./buildConsoleReplay\"));\nvar handleError_1 = __importDefault(require(\"./handleError\"));\nfunction serverRenderReactComponent(options) {\n var _this = this;\n var name = options.name, domNodeId = options.domNodeId, trace = options.trace, props = options.props, railsContext = options.railsContext, renderingReturnsPromises = options.renderingReturnsPromises, throwJsErrors = options.throwJsErrors;\n var renderResult = null;\n var hasErrors = false;\n var renderingError = null;\n try {\n var componentObj = ComponentRegistry_1.default.get(name);\n if (componentObj.isRenderer) {\n throw new Error(\"Detected a renderer while server rendering component '\" + name + \"'. See https://github.com/shakacode/react_on_rails#renderer-functions\");\n }\n var reactRenderingResult_1 = createReactOutput_1.default({\n componentObj: componentObj,\n domNodeId: domNodeId,\n trace: trace,\n props: props,\n railsContext: railsContext,\n });\n var processServerRenderHash = function () {\n // We let the client side handle any redirect\n // Set hasErrors in case we want to throw a Rails exception\n hasErrors = !!reactRenderingResult_1.routeError;\n if (hasErrors) {\n console.error(\"React Router ERROR: \" + JSON.stringify(reactRenderingResult_1.routeError));\n }\n if (reactRenderingResult_1.redirectLocation) {\n if (trace) {\n var redirectLocation = reactRenderingResult_1.redirectLocation;\n var redirectPath = redirectLocation.pathname + redirectLocation.search;\n console.log(\" ROUTER REDIRECT: \" + name + \" to dom node with id: \" + domNodeId + \", redirect to \" + redirectPath);\n }\n // For redirects on server rendering, we can't stop Rails from returning the same result.\n // Possibly, someday, we could have the rails server redirect.\n return '';\n }\n return reactRenderingResult_1.renderedHtml;\n };\n var processPromise = function () {\n if (!renderingReturnsPromises) {\n console.error('Your render function returned a Promise, which is only supported by a node renderer, not ExecJS.');\n }\n return reactRenderingResult_1;\n };\n var processReactElement = function () {\n try {\n return server_1.default.renderToString(reactRenderingResult_1);\n }\n catch (error) {\n console.error(\"Invalid call to renderToString. Possibly you have a renderFunction, a function that already\\ncalls renderToString, that takes one parameter. You need to add an extra unused parameter to identify this function\\nas a renderFunction and not a simple React Function Component.\");\n throw error;\n }\n };\n if (isServerRenderResult_1.isServerRenderHash(reactRenderingResult_1)) {\n renderResult = processServerRenderHash();\n }\n else if (isServerRenderResult_1.isPromise(reactRenderingResult_1)) {\n renderResult = processPromise();\n }\n else {\n renderResult = processReactElement();\n }\n }\n catch (e) {\n if (throwJsErrors) {\n throw e;\n }\n hasErrors = true;\n renderResult = handleError_1.default({\n e: e,\n name: name,\n serverSide: true,\n });\n renderingError = e;\n }\n var consoleReplayScript = buildConsoleReplay_1.default();\n var addRenderingErrors = function (resultObject, renderError) {\n resultObject.renderingError = {\n message: renderError.message,\n stack: renderError.stack,\n };\n };\n if (renderingReturnsPromises) {\n var resolveRenderResult = function () { return __awaiter(_this, void 0, void 0, function () {\n var promiseResult, e_1;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n _a = {};\n return [4 /*yield*/, renderResult];\n case 1:\n promiseResult = (_a.html = _b.sent(),\n _a.consoleReplayScript = consoleReplayScript,\n _a.hasErrors = hasErrors,\n _a);\n return [3 /*break*/, 3];\n case 2:\n e_1 = _b.sent();\n if (throwJsErrors) {\n throw e_1;\n }\n promiseResult = {\n html: handleError_1.default({\n e: e_1,\n name: name,\n serverSide: true,\n }),\n consoleReplayScript: consoleReplayScript,\n hasErrors: true,\n };\n renderingError = e_1;\n return [3 /*break*/, 3];\n case 3:\n if (renderingError !== null) {\n addRenderingErrors(promiseResult, renderingError);\n }\n return [2 /*return*/, promiseResult];\n }\n });\n }); };\n return resolveRenderResult();\n }\n var result = {\n html: renderResult,\n consoleReplayScript: consoleReplayScript,\n hasErrors: hasErrors,\n };\n if (renderingError) {\n addRenderingErrors(result, renderingError);\n }\n return JSON.stringify(result);\n}\nexports.default = serverRenderReactComponent;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_dom_1 = __importDefault(require(\"react-dom\"));\nvar reactMajorVersion = parseInt(react_dom_1.default.version.split('.')[0], 10);\nexports.default = reactMajorVersion >= 18;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { a as _objectSpread2, _ as _createSuper, E as cleanValue } from '../../dist/index-4bd03571.esm.js';\nimport React, { Component } from 'react';\nimport { S as Select, g as getOptionValue, a as getOptionLabel } from '../../dist/Select-dbb12e54.esm.js';\nimport { m as manageState } from '../../dist/stateManager-845a3300.esm.js';\nimport '@emotion/react';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/typeof';\nimport 'react-input-autosize';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport 'memoize-one';\n\nvar compareOption = function compareOption() {\n var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var option = arguments.length > 1 ? arguments[1] : undefined;\n var accessors = arguments.length > 2 ? arguments[2] : undefined;\n var candidate = String(inputValue).toLowerCase();\n var optionValue = String(accessors.getOptionValue(option)).toLowerCase();\n var optionLabel = String(accessors.getOptionLabel(option)).toLowerCase();\n return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n formatCreateLabel: function formatCreateLabel(inputValue) {\n return \"Create \\\"\".concat(inputValue, \"\\\"\");\n },\n isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions, accessors) {\n return !(!inputValue || selectValue.some(function (option) {\n return compareOption(inputValue, option, accessors);\n }) || selectOptions.some(function (option) {\n return compareOption(inputValue, option, accessors);\n }));\n },\n getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n return {\n label: optionLabel,\n value: inputValue,\n __isNew__: true\n };\n },\n getOptionValue: getOptionValue,\n getOptionLabel: getOptionLabel\n};\nvar defaultProps = _objectSpread2({\n allowCreateWhileLoading: false,\n createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(Creatable, _Component);\n\n var _super = _createSuper(Creatable);\n\n function Creatable(props) {\n var _this;\n\n _classCallCheck(this, Creatable);\n\n _this = _super.call(this, props);\n _this.select = void 0;\n\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n getNewOptionData = _this$props.getNewOptionData,\n inputValue = _this$props.inputValue,\n isMulti = _this$props.isMulti,\n onChange = _this$props.onChange,\n onCreateOption = _this$props.onCreateOption,\n value = _this$props.value,\n name = _this$props.name;\n\n if (actionMeta.action !== 'select-option') {\n return onChange(newValue, actionMeta);\n }\n\n var newOption = _this.state.newOption;\n var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n if (valueArray[valueArray.length - 1] === newOption) {\n if (onCreateOption) onCreateOption(inputValue);else {\n var newOptionData = getNewOptionData(inputValue, inputValue);\n var newActionMeta = {\n action: 'create-option',\n name: name,\n option: newOptionData\n };\n\n if (isMulti) {\n onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n } else {\n onChange(newOptionData, newActionMeta);\n }\n }\n return;\n }\n\n onChange(newValue, actionMeta);\n };\n\n var options = props.options || [];\n _this.state = {\n newOption: undefined,\n options: options\n };\n return _this;\n }\n\n _createClass(Creatable, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var options = this.state.options;\n return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, this.props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n options: options,\n onChange: this.onChange\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var allowCreateWhileLoading = props.allowCreateWhileLoading,\n createOptionPosition = props.createOptionPosition,\n formatCreateLabel = props.formatCreateLabel,\n getNewOptionData = props.getNewOptionData,\n inputValue = props.inputValue,\n isLoading = props.isLoading,\n isValidNewOption = props.isValidNewOption,\n value = props.value,\n getOptionValue = props.getOptionValue,\n getOptionLabel = props.getOptionLabel;\n var options = props.options || [];\n var newOption = state.newOption;\n\n if (isValidNewOption(inputValue, cleanValue(value), options, {\n getOptionValue: getOptionValue,\n getOptionLabel: getOptionLabel\n })) {\n newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n } else {\n newOption = undefined;\n }\n\n return {\n newOption: newOption,\n options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n };\n }\n }]);\n\n return Creatable;\n }(Component), _class.defaultProps = defaultProps, _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nexport default Creatable;\nexport { defaultProps, makeCreatableSelect };\n","import objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction emailLink(url, _a) {\n var subject = _a.subject, body = _a.body, separator = _a.separator;\n return 'mailto:' + objectToGetParams({ subject: subject, body: body ? body + separator + url : url });\n}\nvar EmailShareButton = createShareButton('email', emailLink, function (props) { return ({\n subject: props.subject,\n body: props.body,\n separator: props.separator || ' ',\n}); }, {\n openShareDialogOnClick: false,\n onClick: function (_, link) {\n window.location.href = link;\n },\n});\nexport default EmailShareButton;\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction facebookLink(url, _a) {\n var quote = _a.quote, hashtag = _a.hashtag;\n assert(url, 'facebook.url');\n return ('https://www.facebook.com/sharer/sharer.php' +\n objectToGetParams({\n u: url,\n quote: quote,\n hashtag: hashtag,\n }));\n}\nvar FacebookShareButton = createShareButton('facebook', facebookLink, function (props) { return ({\n quote: props.quote,\n hashtag: props.hashtag,\n}); }, {\n windowWidth: 550,\n windowHeight: 400,\n});\nexport default FacebookShareButton;\n","import assert from './utils/assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './hocs/createShareButton';\nfunction twitterLink(url, _a) {\n var title = _a.title, via = _a.via, _b = _a.hashtags, hashtags = _b === void 0 ? [] : _b, _c = _a.related, related = _c === void 0 ? [] : _c;\n assert(url, 'twitter.url');\n assert(Array.isArray(hashtags), 'twitter.hashtags is not an array');\n assert(Array.isArray(related), 'twitter.related is not an array');\n return ('https://twitter.com/share' +\n objectToGetParams({\n url: url,\n text: title,\n via: via,\n hashtags: hashtags.length > 0 ? hashtags.join(',') : undefined,\n related: related.length > 0 ? related.join(',') : undefined,\n }));\n}\nvar TwitterShareButton = createShareButton('twitter', twitterLink, function (props) { return ({\n hashtags: props.hashtags,\n title: props.title,\n via: props.via,\n related: props.related,\n}); }, {\n windowWidth: 550,\n windowHeight: 400,\n});\nexport default TwitterShareButton;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { Component } from 'react';\nimport cx from 'classnames';\nvar isPromise = function (obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n};\nvar getBoxPositionOnWindowCenter = function (width, height) { return ({\n left: window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2,\n top: window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2,\n}); };\nvar getBoxPositionOnScreenCenter = function (width, height) { return ({\n top: (window.screen.height - height) / 2,\n left: (window.screen.width - width) / 2,\n}); };\nfunction windowOpen(url, _a, onClose) {\n var height = _a.height, width = _a.width, configRest = __rest(_a, [\"height\", \"width\"]);\n var config = __assign({ height: height,\n width: width, location: 'no', toolbar: 'no', status: 'no', directories: 'no', menubar: 'no', scrollbars: 'yes', resizable: 'no', centerscreen: 'yes', chrome: 'yes' }, configRest);\n var shareDialog = window.open(url, '', Object.keys(config)\n .map(function (key) { return key + \"=\" + config[key]; })\n .join(', '));\n if (onClose) {\n var interval_1 = window.setInterval(function () {\n try {\n if (shareDialog === null || shareDialog.closed) {\n window.clearInterval(interval_1);\n onClose(shareDialog);\n }\n }\n catch (e) {\n /* eslint-disable no-console */\n console.error(e);\n /* eslint-enable no-console */\n }\n }, 1000);\n }\n return shareDialog;\n}\nvar ShareButton = /** @class */ (function (_super) {\n __extends(ShareButton, _super);\n function ShareButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.openShareDialog = function (link) {\n var _a = _this.props, onShareWindowClose = _a.onShareWindowClose, _b = _a.windowHeight, windowHeight = _b === void 0 ? 400 : _b, _c = _a.windowPosition, windowPosition = _c === void 0 ? 'windowCenter' : _c, _d = _a.windowWidth, windowWidth = _d === void 0 ? 550 : _d;\n var windowConfig = __assign({ height: windowHeight, width: windowWidth }, (windowPosition === 'windowCenter'\n ? getBoxPositionOnWindowCenter(windowWidth, windowHeight)\n : getBoxPositionOnScreenCenter(windowWidth, windowHeight)));\n windowOpen(link, windowConfig, onShareWindowClose);\n };\n _this.handleClick = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var _a, beforeOnClick, disabled, networkLink, onClick, url, openShareDialogOnClick, opts, link, returnVal;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this.props, beforeOnClick = _a.beforeOnClick, disabled = _a.disabled, networkLink = _a.networkLink, onClick = _a.onClick, url = _a.url, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts;\n link = networkLink(url, opts);\n if (disabled) {\n return [2 /*return*/];\n }\n event.preventDefault();\n if (!beforeOnClick) return [3 /*break*/, 2];\n returnVal = beforeOnClick();\n if (!isPromise(returnVal)) return [3 /*break*/, 2];\n return [4 /*yield*/, returnVal];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n if (openShareDialogOnClick) {\n this.openShareDialog(link);\n }\n if (onClick) {\n onClick(event, link);\n }\n return [2 /*return*/];\n }\n });\n }); };\n return _this;\n }\n ShareButton.prototype.render = function () {\n var _a = this.props, beforeOnClick = _a.beforeOnClick, children = _a.children, className = _a.className, disabled = _a.disabled, disabledStyle = _a.disabledStyle, forwardedRef = _a.forwardedRef, networkLink = _a.networkLink, networkName = _a.networkName, onShareWindowClose = _a.onShareWindowClose, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts, resetButtonStyle = _a.resetButtonStyle, style = _a.style, url = _a.url, windowHeight = _a.windowHeight, windowPosition = _a.windowPosition, windowWidth = _a.windowWidth, rest = __rest(_a, [\"beforeOnClick\", \"children\", \"className\", \"disabled\", \"disabledStyle\", \"forwardedRef\", \"networkLink\", \"networkName\", \"onShareWindowClose\", \"openShareDialogOnClick\", \"opts\", \"resetButtonStyle\", \"style\", \"url\", \"windowHeight\", \"windowPosition\", \"windowWidth\"]);\n var newClassName = cx('react-share__ShareButton', {\n 'react-share__ShareButton--disabled': !!disabled,\n disabled: !!disabled,\n }, className);\n var newStyle = resetButtonStyle\n ? __assign(__assign({ backgroundColor: 'transparent', border: 'none', padding: 0, font: 'inherit', color: 'inherit', cursor: 'pointer' }, style), (disabled && disabledStyle)) : __assign(__assign({}, style), (disabled && disabledStyle));\n return (React.createElement(\"button\", __assign({}, rest, { \"aria-label\": rest['aria-label'] || networkName, className: newClassName, onClick: this.handleClick, ref: forwardedRef, style: newStyle }), children));\n };\n ShareButton.defaultProps = {\n disabledStyle: { opacity: 0.6 },\n openShareDialogOnClick: true,\n resetButtonStyle: true,\n };\n return ShareButton;\n}(Component));\nexport default ShareButton;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport React, { forwardRef } from 'react';\nimport ShareButton from '../ShareButton';\nfunction createShareButton(networkName, link, optsMap, defaultProps) {\n function CreatedButton(props, ref) {\n var opts = optsMap(props);\n var passedProps = __assign({}, props);\n // remove keys from passed props that are passed as opts\n var optsKeys = Object.keys(opts);\n optsKeys.forEach(function (key) {\n delete passedProps[key];\n });\n return (React.createElement(ShareButton, __assign({}, defaultProps, passedProps, { forwardedRef: ref, networkName: networkName, networkLink: link, opts: optsMap(props) })));\n }\n CreatedButton.displayName = \"ShareButton-\" + networkName;\n return forwardRef(CreatedButton);\n}\nexport default createShareButton;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n function AssertionError(message) {\n var _this = _super.call(this, message) || this;\n _this.name = 'AssertionError';\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default function assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n","export default function objectToGetParams(object) {\n var params = Object.entries(object)\n .filter(function (_a) {\n var value = _a[1];\n return value !== undefined && value !== null;\n })\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(String(value));\n });\n return params.length > 0 ? \"?\" + params.join('&') : '';\n}\n","/*!\n * Signature Pad v4.2.0 | https://github.com/szimek/signature_pad\n * (c) 2024 Szymon Nowak | Released under the MIT license\n */\n\nclass Point {\n constructor(x, y, pressure, time) {\n if (isNaN(x) || isNaN(y)) {\n throw new Error(`Point is invalid: (${x}, ${y})`);\n }\n this.x = +x;\n this.y = +y;\n this.pressure = pressure || 0;\n this.time = time || Date.now();\n }\n distanceTo(start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n }\n equals(other) {\n return (this.x === other.x &&\n this.y === other.y &&\n this.pressure === other.pressure &&\n this.time === other.time);\n }\n velocityFrom(start) {\n return this.time !== start.time\n ? this.distanceTo(start) / (this.time - start.time)\n : 0;\n }\n}\n\nclass Bezier {\n static fromPoints(points, widths) {\n const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n }\n static calculateControlPoints(s1, s2, s3) {\n const dx1 = s1.x - s2.x;\n const dy1 = s1.y - s2.y;\n const dx2 = s2.x - s3.x;\n const dy2 = s2.y - s3.y;\n const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n const dxm = m1.x - m2.x;\n const dym = m1.y - m2.y;\n const k = l2 / (l1 + l2);\n const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n const tx = s2.x - cm.x;\n const ty = s2.y - cm.y;\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty),\n };\n }\n constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {\n this.startPoint = startPoint;\n this.control2 = control2;\n this.control1 = control1;\n this.endPoint = endPoint;\n this.startWidth = startWidth;\n this.endWidth = endWidth;\n }\n length() {\n const steps = 10;\n let length = 0;\n let px;\n let py;\n for (let i = 0; i <= steps; i += 1) {\n const t = i / steps;\n const cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n const cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n const xdiff = cx - px;\n const ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n return length;\n }\n point(t, start, c1, c2, end) {\n return (start * (1.0 - t) * (1.0 - t) * (1.0 - t))\n + (3.0 * c1 * (1.0 - t) * (1.0 - t) * t)\n + (3.0 * c2 * (1.0 - t) * t * t)\n + (end * t * t * t);\n }\n}\n\nclass SignatureEventTarget {\n constructor() {\n try {\n this._et = new EventTarget();\n }\n catch (error) {\n this._et = document;\n }\n }\n addEventListener(type, listener, options) {\n this._et.addEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n return this._et.dispatchEvent(event);\n }\n removeEventListener(type, callback, options) {\n this._et.removeEventListener(type, callback, options);\n }\n}\n\nfunction throttle(fn, wait = 250) {\n let previous = 0;\n let timeout = null;\n let result;\n let storedContext;\n let storedArgs;\n const later = () => {\n previous = Date.now();\n timeout = null;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n };\n return function wrapper(...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n storedContext = this;\n storedArgs = args;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n }\n else if (!timeout) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nclass SignaturePad extends SignatureEventTarget {\n constructor(canvas, options = {}) {\n super();\n this.canvas = canvas;\n this._drawingStroke = false;\n this._isEmpty = true;\n this._lastPoints = [];\n this._data = [];\n this._lastVelocity = 0;\n this._lastWidth = 0;\n this._handleMouseDown = (event) => {\n if (event.buttons === 1) {\n this._strokeBegin(event);\n }\n };\n this._handleMouseMove = (event) => {\n this._strokeMoveUpdate(event);\n };\n this._handleMouseUp = (event) => {\n if (event.buttons === 1) {\n this._strokeEnd(event);\n }\n };\n this._handleTouchStart = (event) => {\n if (event.cancelable) {\n event.preventDefault();\n }\n if (event.targetTouches.length === 1) {\n const touch = event.changedTouches[0];\n this._strokeBegin(touch);\n }\n };\n this._handleTouchMove = (event) => {\n if (event.cancelable) {\n event.preventDefault();\n }\n const touch = event.targetTouches[0];\n this._strokeMoveUpdate(touch);\n };\n this._handleTouchEnd = (event) => {\n const wasCanvasTouched = event.target === this.canvas;\n if (wasCanvasTouched) {\n if (event.cancelable) {\n event.preventDefault();\n }\n const touch = event.changedTouches[0];\n this._strokeEnd(touch);\n }\n };\n this._handlePointerStart = (event) => {\n event.preventDefault();\n this._strokeBegin(event);\n };\n this._handlePointerMove = (event) => {\n this._strokeMoveUpdate(event);\n };\n this._handlePointerEnd = (event) => {\n if (this._drawingStroke) {\n event.preventDefault();\n this._strokeEnd(event);\n }\n };\n this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n this.minWidth = options.minWidth || 0.5;\n this.maxWidth = options.maxWidth || 2.5;\n this.throttle = ('throttle' in options ? options.throttle : 16);\n this.minDistance = ('minDistance' in options ? options.minDistance : 5);\n this.dotSize = options.dotSize || 0;\n this.penColor = options.penColor || 'black';\n this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n this.compositeOperation = options.compositeOperation || 'source-over';\n this.canvasContextOptions = ('canvasContextOptions' in options ? options.canvasContextOptions : {});\n this._strokeMoveUpdate = this.throttle\n ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)\n : SignaturePad.prototype._strokeUpdate;\n this._ctx = canvas.getContext('2d', this.canvasContextOptions);\n this.clear();\n this.on();\n }\n clear() {\n const { _ctx: ctx, canvas } = this;\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n this._data = [];\n this._reset(this._getPointGroupOptions());\n this._isEmpty = true;\n }\n fromDataURL(dataUrl, options = {}) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n const ratio = options.ratio || window.devicePixelRatio || 1;\n const width = options.width || this.canvas.width / ratio;\n const height = options.height || this.canvas.height / ratio;\n const xOffset = options.xOffset || 0;\n const yOffset = options.yOffset || 0;\n this._reset(this._getPointGroupOptions());\n image.onload = () => {\n this._ctx.drawImage(image, xOffset, yOffset, width, height);\n resolve();\n };\n image.onerror = (error) => {\n reject(error);\n };\n image.crossOrigin = 'anonymous';\n image.src = dataUrl;\n this._isEmpty = false;\n });\n }\n toDataURL(type = 'image/png', encoderOptions) {\n switch (type) {\n case 'image/svg+xml':\n if (typeof encoderOptions !== 'object') {\n encoderOptions = undefined;\n }\n return `data:image/svg+xml;base64,${btoa(this.toSVG(encoderOptions))}`;\n default:\n if (typeof encoderOptions !== 'number') {\n encoderOptions = undefined;\n }\n return this.canvas.toDataURL(type, encoderOptions);\n }\n }\n on() {\n this.canvas.style.touchAction = 'none';\n this.canvas.style.msTouchAction = 'none';\n this.canvas.style.userSelect = 'none';\n const isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n if (window.PointerEvent && !isIOS) {\n this._handlePointerEvents();\n }\n else {\n this._handleMouseEvents();\n if ('ontouchstart' in window) {\n this._handleTouchEvents();\n }\n }\n }\n off() {\n this.canvas.style.touchAction = 'auto';\n this.canvas.style.msTouchAction = 'auto';\n this.canvas.style.userSelect = 'auto';\n this.canvas.removeEventListener('pointerdown', this._handlePointerStart);\n this.canvas.removeEventListener('pointermove', this._handlePointerMove);\n this.canvas.ownerDocument.removeEventListener('pointerup', this._handlePointerEnd);\n this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n this.canvas.removeEventListener('mousemove', this._handleMouseMove);\n this.canvas.ownerDocument.removeEventListener('mouseup', this._handleMouseUp);\n this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n this.canvas.removeEventListener('touchend', this._handleTouchEnd);\n }\n isEmpty() {\n return this._isEmpty;\n }\n fromData(pointGroups, { clear = true } = {}) {\n if (clear) {\n this.clear();\n }\n this._fromData(pointGroups, this._drawCurve.bind(this), this._drawDot.bind(this));\n this._data = this._data.concat(pointGroups);\n }\n toData() {\n return this._data;\n }\n _getPointGroupOptions(group) {\n return {\n penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n velocityFilterWeight: group && 'velocityFilterWeight' in group\n ? group.velocityFilterWeight\n : this.velocityFilterWeight,\n compositeOperation: group && 'compositeOperation' in group\n ? group.compositeOperation\n : this.compositeOperation,\n };\n }\n _strokeBegin(event) {\n const cancelled = !this.dispatchEvent(new CustomEvent('beginStroke', { detail: event, cancelable: true }));\n if (cancelled) {\n return;\n }\n this._drawingStroke = true;\n const pointGroupOptions = this._getPointGroupOptions();\n const newPointGroup = Object.assign(Object.assign({}, pointGroupOptions), { points: [] });\n this._data.push(newPointGroup);\n this._reset(pointGroupOptions);\n this._strokeUpdate(event);\n }\n _strokeUpdate(event) {\n if (!this._drawingStroke) {\n return;\n }\n if (this._data.length === 0) {\n this._strokeBegin(event);\n return;\n }\n this.dispatchEvent(new CustomEvent('beforeUpdateStroke', { detail: event }));\n const x = event.clientX;\n const y = event.clientY;\n const pressure = event.pressure !== undefined\n ? event.pressure\n : event.force !== undefined\n ? event.force\n : 0;\n const point = this._createPoint(x, y, pressure);\n const lastPointGroup = this._data[this._data.length - 1];\n const lastPoints = lastPointGroup.points;\n const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n const isLastPointTooClose = lastPoint\n ? point.distanceTo(lastPoint) <= this.minDistance\n : false;\n const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n const curve = this._addPoint(point, pointGroupOptions);\n if (!lastPoint) {\n this._drawDot(point, pointGroupOptions);\n }\n else if (curve) {\n this._drawCurve(curve, pointGroupOptions);\n }\n lastPoints.push({\n time: point.time,\n x: point.x,\n y: point.y,\n pressure: point.pressure,\n });\n }\n this.dispatchEvent(new CustomEvent('afterUpdateStroke', { detail: event }));\n }\n _strokeEnd(event) {\n if (!this._drawingStroke) {\n return;\n }\n this._strokeUpdate(event);\n this._drawingStroke = false;\n this.dispatchEvent(new CustomEvent('endStroke', { detail: event }));\n }\n _handlePointerEvents() {\n this._drawingStroke = false;\n this.canvas.addEventListener('pointerdown', this._handlePointerStart);\n this.canvas.addEventListener('pointermove', this._handlePointerMove);\n this.canvas.ownerDocument.addEventListener('pointerup', this._handlePointerEnd);\n }\n _handleMouseEvents() {\n this._drawingStroke = false;\n this.canvas.addEventListener('mousedown', this._handleMouseDown);\n this.canvas.addEventListener('mousemove', this._handleMouseMove);\n this.canvas.ownerDocument.addEventListener('mouseup', this._handleMouseUp);\n }\n _handleTouchEvents() {\n this.canvas.addEventListener('touchstart', this._handleTouchStart);\n this.canvas.addEventListener('touchmove', this._handleTouchMove);\n this.canvas.addEventListener('touchend', this._handleTouchEnd);\n }\n _reset(options) {\n this._lastPoints = [];\n this._lastVelocity = 0;\n this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n this._ctx.fillStyle = options.penColor;\n this._ctx.globalCompositeOperation = options.compositeOperation;\n }\n _createPoint(x, y, pressure) {\n const rect = this.canvas.getBoundingClientRect();\n return new Point(x - rect.left, y - rect.top, pressure, new Date().getTime());\n }\n _addPoint(point, options) {\n const { _lastPoints } = this;\n _lastPoints.push(point);\n if (_lastPoints.length > 2) {\n if (_lastPoints.length === 3) {\n _lastPoints.unshift(_lastPoints[0]);\n }\n const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);\n const curve = Bezier.fromPoints(_lastPoints, widths);\n _lastPoints.shift();\n return curve;\n }\n return null;\n }\n _calculateCurveWidths(startPoint, endPoint, options) {\n const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n (1 - options.velocityFilterWeight) * this._lastVelocity;\n const newWidth = this._strokeWidth(velocity, options);\n const widths = {\n end: newWidth,\n start: this._lastWidth,\n };\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n return widths;\n }\n _strokeWidth(velocity, options) {\n return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n }\n _drawCurveSegment(x, y, width) {\n const ctx = this._ctx;\n ctx.moveTo(x, y);\n ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n }\n _drawCurve(curve, options) {\n const ctx = this._ctx;\n const widthDelta = curve.endWidth - curve.startWidth;\n const drawSteps = Math.ceil(curve.length()) * 2;\n ctx.beginPath();\n ctx.fillStyle = options.penColor;\n for (let i = 0; i < drawSteps; i += 1) {\n const t = i / drawSteps;\n const tt = t * t;\n const ttt = tt * t;\n const u = 1 - t;\n const uu = u * u;\n const uuu = uu * u;\n let x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n let y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n const width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);\n this._drawCurveSegment(x, y, width);\n }\n ctx.closePath();\n ctx.fill();\n }\n _drawDot(point, options) {\n const ctx = this._ctx;\n const width = options.dotSize > 0\n ? options.dotSize\n : (options.minWidth + options.maxWidth) / 2;\n ctx.beginPath();\n this._drawCurveSegment(point.x, point.y, width);\n ctx.closePath();\n ctx.fillStyle = options.penColor;\n ctx.fill();\n }\n _fromData(pointGroups, drawCurve, drawDot) {\n for (const group of pointGroups) {\n const { points } = group;\n const pointGroupOptions = this._getPointGroupOptions(group);\n if (points.length > 1) {\n for (let j = 0; j < points.length; j += 1) {\n const basicPoint = points[j];\n const point = new Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);\n if (j === 0) {\n this._reset(pointGroupOptions);\n }\n const curve = this._addPoint(point, pointGroupOptions);\n if (curve) {\n drawCurve(curve, pointGroupOptions);\n }\n }\n }\n else {\n this._reset(pointGroupOptions);\n drawDot(points[0], pointGroupOptions);\n }\n }\n }\n toSVG({ includeBackgroundColor = false } = {}) {\n const pointGroups = this._data;\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\n const minX = 0;\n const minY = 0;\n const maxX = this.canvas.width / ratio;\n const maxY = this.canvas.height / ratio;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n svg.setAttribute('viewBox', `${minX} ${minY} ${maxX} ${maxY}`);\n svg.setAttribute('width', maxX.toString());\n svg.setAttribute('height', maxY.toString());\n if (includeBackgroundColor && this.backgroundColor) {\n const rect = document.createElement('rect');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n rect.setAttribute('fill', this.backgroundColor);\n svg.appendChild(rect);\n }\n this._fromData(pointGroups, (curve, { penColor }) => {\n const path = document.createElement('path');\n if (!isNaN(curve.control1.x) &&\n !isNaN(curve.control1.y) &&\n !isNaN(curve.control2.x) &&\n !isNaN(curve.control2.y)) {\n const attr = `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(3)} ` +\n `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +\n `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +\n `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n path.setAttribute('stroke', penColor);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n svg.appendChild(path);\n }\n }, (point, { penColor, dotSize, minWidth, maxWidth }) => {\n const circle = document.createElement('circle');\n const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n circle.setAttribute('r', size.toString());\n circle.setAttribute('cx', point.x.toString());\n circle.setAttribute('cy', point.y.toString());\n circle.setAttribute('fill', penColor);\n svg.appendChild(circle);\n });\n return svg.outerHTML;\n }\n}\n\nexport { SignaturePad as default };\n//# sourceMappingURL=signature_pad.js.map\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","import*as t from\"react\";import e from\"signature_pad\";import{debounce as r}from\"throttle-debounce\";var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},n(t,e)};var i=function(){return i=Object.assign||function(t){for(var e,r=1,n=arguments.length;r result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined$1, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined$1;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports \n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n});\n\nvar BackdropContainerStyle = {\n position: \"fixed\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n background: \"rgba(0, 0, 0, 0.4)\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n zIndex: 1400\n};\nvar inEffect = \".web-share-fade{animation:simpleFade 0.5s;animation-fill-mode:both }@keyframes simpleFade{0%{opacity:0 }100%{opacity:1 }}.web-share-fade-in-up{animation:fadeInUp 0.5s;animation-fill-mode:both }@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px) }100%{opacity:1;transform:translateY(0) }}\";\nfunction Backdrop(_ref) {\n var children = _ref.children,\n onClose = _ref.onClose;\n\n var handleOnClose = function handleOnClose(e) {\n if (e.target === e.currentTarget) {\n onClose(e);\n }\n };\n\n return React.createElement(\"div\", {\n onClick: handleOnClose,\n className: \"web-share-fade\",\n style: BackdropContainerStyle\n }, React.createElement(\"style\", {\n children: inEffect\n }), children);\n}\n\nvar externalOpen = function externalOpen(URL) {\n return window.open(URL, \"_blank\", \"noopener\");\n};\n\nvar iconList = {\n facebook: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 12a12 12 0 10-13.9 11.9v-8.4h-3V12h3V9.4c0-3 1.8-4.7 4.6-4.7l2.6.2v3h-1.5c-1.5 0-2 .9-2 1.8V12h3.4l-.5 3.5h-2.8v8.4A12 12 0 0024 12z\"\n }),\n color: \"#0076FB\",\n e: function e(l) {\n return externalOpen(\"https://www.facebook.com/sharer/sharer.php?u=\" + l);\n }\n },\n twitter: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 4.6a10 10 0 01-2.9.7 5 5 0 002.2-2.7c-1 .6-2 1-3.1 1.2a5 5 0 00-8.4 4.5A14 14 0 011.6 3.2 4.8 4.8 0 001 5.6a5 5 0 002.2 4.1 4.9 4.9 0 01-2.3-.6A5 5 0 005 14a5 5 0 01-2.2 0 5 5 0 004.6 3.5 9.9 9.9 0 01-6.1 2.1H0a14 14 0 007.6 2.2c9 0 14-7.5 14-14V7A10 10 0 0024 4.6z\"\n }),\n color: \"#1DA1F2\",\n e: function e(l, t) {\n return externalOpen(\"https://twitter.com/intent/tweet?text=\" + t + \"&url=\" + l);\n }\n },\n whatsapp: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5 14.4l-2-1c-.3 0-.5-.1-.7.2l-1 1.1c-.1.2-.3.3-.6.1s-1.3-.5-2.4-1.5a9 9 0 01-1.7-2c-.1-.3 0-.5.2-.6l.4-.6c.2-.1.2-.3.3-.5v-.5L9 7c-.2-.6-.4-.5-.6-.5h-.6c-.2 0-.5 0-.8.4-.2.3-1 1-1 2.5s1 2.8 1.2 3c.2.2 2.1 3.2 5.1 4.5l1.7.6a4 4 0 001.9.2c.5-.1 1.7-.8 2-1.5.2-.6.2-1.2.1-1.4l-.5-.3M12 21.8a9.9 9.9 0 01-5-1.4l-.4-.2-3.7 1 1-3.7-.2-.3a9.9 9.9 0 01-1.5-5.3 9.9 9.9 0 0116.8-7 9.8 9.8 0 013 7 9.9 9.9 0 01-10 9.9m8.4-18.3A11.8 11.8 0 0012.1 0 12 12 0 001.8 17.8L0 24l6.4-1.6a11.9 11.9 0 005.6 1.4 12 12 0 0012-11.9 11.8 11.8 0 00-3.5-8.4z\"\n }),\n color: \"#25D366\",\n e: function e(l, t) {\n return externalOpen(\"https://api.whatsapp.com/send?text=\" + t + \" \" + l);\n }\n },\n reddit: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm5.01 4.74c.69 0 1.25.56 1.25 1.25a1.25 1.25 0 01-2.5.06l-2.6-.55-.8 3.75c1.83.07 3.48.63 4.68 1.49.3-.31.73-.5 1.2-.5.97 0 1.76.8 1.76 1.76 0 .72-.43 1.33-1.01 1.61a3.11 3.11 0 01.04.52c0 2.7-3.13 4.87-7 4.87-3.88 0-7-2.17-7-4.87 0-.18 0-.36.04-.53A1.75 1.75 0 014.03 12a1.75 1.75 0 012.96-1.26 8.52 8.52 0 014.74-1.5l.89-4.17a.34.34 0 01.14-.2.35.35 0 01.24-.04l2.9.62a1.21 1.21 0 011.11-.7zM9.25 12a1.25 1.25 0 101.25 1.25c0-.69-.56-1.25-1.25-1.25zm5.5 0a1.25 1.25 0 000 2.5 1.25 1.25 0 000-2.5zm-5.47 3.99a.33.33 0 00-.23.1.33.33 0 000 .46c.84.84 2.49.91 2.96.91.48 0 2.1-.06 2.96-.91a.36.36 0 00.03-.47.33.33 0 00-.46 0c-.55.54-1.68.73-2.51.73-.83 0-1.98-.2-2.51-.73a.33.33 0 00-.24-.1z\"\n }),\n color: \"#FF4500\",\n e: function e(l, t) {\n return externalOpen(\"https://www.reddit.com/submit?url=\" + l + \"&title=\" + t);\n }\n },\n telegram: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.91 3.79L20.3 20.84c-.25 1.21-.98 1.5-2 .94l-5.5-4.07-2.66 2.57c-.3.3-.55.56-1.1.56-.72 0-.6-.27-.84-.95L6.3 13.7.85 12c-1.18-.35-1.19-1.16.26-1.75l21.26-8.2c.97-.43 1.9.24 1.53 1.73z\"\n }),\n color: \"#0088CC\",\n e: function e(l, t) {\n return externalOpen(\"https://telegram.me/share/msg?url=\" + l + \"&text=\" + t);\n }\n },\n linkedin: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 21.5h-5v-13h5v13zM4 6.5C2.5 6.5 1.5 5.3 1.5 4s1-2.4 2.5-2.4c1.6 0 2.5 1 2.6 2.5 0 1.4-1 2.5-2.6 2.5zm11.5 6c-1 0-2 1-2 2v7h-5v-13h5V10s1.6-1.5 4-1.5c3 0 5 2.2 5 6.3v6.7h-5v-7c0-1-1-2-2-2z\"\n }),\n color: \"#0073b1\",\n e: function e(l, t, ti) {\n return externalOpen(\"https://www.linkedin.com/shareArticle?mini=true&url=\" + l + \"&title=\" + ti + \"&summary=\" + t);\n }\n },\n mail: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 4H4a2 2 0 00-2 2v12c0 1.1.9 2 2 2h16a2 2 0 002-2V6a2 2 0 00-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"\n }),\n color: \"#E53E3E\",\n e: function e(l, t) {\n return externalOpen(\"mailto:?body=\" + l + \"&subject=\" + t);\n }\n },\n copy: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 1H4a2 2 0 00-2 2v14h2V3h12V1zm3 4H8a2 2 0 00-2 2v14c0 1.1.9 2 2 2h11a2 2 0 002-2V7a2 2 0 00-2-2zm0 16H8V7h11v14z\"\n }),\n color: \"#718096\",\n e: function e(l) {\n return navigator.clipboard.writeText(decodeURIComponent(l));\n }\n },\n vk: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.7 6.24c.16-.52 0-.9-.73-.9H19.5c-.62 0-.91.32-1.06.69 0 0-1.25 3.04-3.02 5.02-.57.57-.83.75-1.15.75-.15 0-.39-.18-.39-.7V6.24c0-.63-.17-.9-.69-.9H9.34c-.39 0-.62.29-.62.56 0 .59.88.72.97 2.4v3.6c0 .8-.14.95-.45.95-.84 0-2.86-3.06-4.06-6.56-.24-.68-.48-.96-1.1-.96H1.61c-.7 0-.85.33-.85.7 0 .65.84 3.88 3.88 8.14 2.03 2.92 4.9 4.5 7.5 4.5 1.55 0 1.75-.35 1.75-.96 0-2.78-.15-3.04.64-3.04.36 0 .99.18 2.44 1.58 1.67 1.67 1.95 2.42 2.88 2.42h2.45c.7 0 1.06-.35.85-1.05-.46-1.45-3.62-4.44-3.76-4.64-.36-.47-.26-.68 0-1.1 0 0 3-4.21 3.3-5.64Z\"\n }),\n color: \"#07f\",\n e: function e(l, t, ti) {\n return externalOpen(\"http://vk.com/share.php?url=\" + l + \"&title=\" + ti + \"&comment=\" + t);\n }\n },\n okru: {\n path: /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.6 16.4c1-.3 2-.7 2.8-1.2a1.5 1.5 0 0 0-1.5-2.5 6.3 6.3 0 0 1-6.7 0 1.5 1.5 0 1 0-1.5 2.5c.9.5 1.8 1 2.9 1.2L6.8 19a1.4 1.4 0 1 0 2 2l2.8-2.6 2.7 2.7a1.5 1.5 0 1 0 2-2l-2.7-2.8Zm-2-11.1a2 2 0 1 1 0 4.1 2 2 0 0 1 0-4.1Zm0 7a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z\"\n }),\n color: \"#e27e35\",\n e: function e(l) {\n return externalOpen(\"https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&st.shareUrl=\" + l);\n }\n }\n};\n\nvar PortalComponent = function PortalComponent(_ref) {\n var children = _ref.children;\n var el = document.createElement(\"div\");\n React.useEffect(function () {\n document.body.appendChild(el);\n return function () {\n document.body.removeChild(el);\n };\n }, [el]);\n return createPortal(children, el);\n};\n\nvar CloseStyle = {\n background: \"#edf2f7\",\n cursor: \"pointer\",\n padding: \"0.75rem\",\n display: \"block\",\n width: \"100%\",\n border: 0,\n fontSize: \"1rem\"\n};\nfunction CloseButton(_ref) {\n var onClose = _ref.onClose,\n closeText = _ref.closeText;\n return React.createElement(\"button\", {\n style: CloseStyle,\n \"aria-label\": \"Close\",\n type: \"button\",\n onClick: onClose\n }, closeText || \"Close\");\n}\n\nvar ShareHeader = {\n padding: \"1rem 1.25rem\",\n fontSize: \"1.25rem\",\n fontWeight: 600,\n paddingBottom: 0\n};\nfunction Header(_ref) {\n var title = _ref.title;\n return React.createElement(\"header\", {\n style: ShareHeader\n }, title);\n}\n\nvar SocialIconStyle = {\n width: \"100%\",\n height: \"auto\",\n cursor: \"pointer\",\n border: 0,\n background: \"#1A78F6\",\n padding: \"0.75rem\",\n borderRadius: \"0.5rem\",\n fontSize: 0\n};\nfunction Icon(_ref) {\n var name = _ref.name,\n data = _ref.data,\n onClose = _ref.onClose,\n onClick = _ref.onClick;\n var _iconList$name = iconList[name],\n path = _iconList$name.path,\n _iconList$name$viewBo = _iconList$name.viewBox,\n viewBox = _iconList$name$viewBo === void 0 ? \"0 0 24 24\" : _iconList$name$viewBo,\n color = _iconList$name.color,\n e = _iconList$name.e;\n\n var handleOnButtonClicked = function handleOnButtonClicked() {\n onClick && onClick(); // callback\n\n e(encodeURIComponent(data.url), data.text, data.title);\n onClose();\n };\n\n return React.createElement(\"button\", {\n onClick: handleOnButtonClicked,\n \"aria-label\": name,\n style: _extends({}, SocialIconStyle, {\n background: color\n })\n }, React.createElement(\"svg\", {\n fill: \"white\",\n viewBox: viewBox\n }, path));\n}\n\nvar IconsContainer = {\n maxWidth: \"24rem\",\n width: \"90%\",\n backgroundColor: \"white\",\n borderRadius: \"0.5rem\",\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n};\nvar IconsLisStyle = {\n padding: \"1.25rem\",\n display: \"grid\",\n gridTemplateColumns: \"repeat(4, 1fr)\",\n gridGap: \"1.25rem\"\n};\nfunction SocialIcons(_ref) {\n var onClose = _ref.onClose,\n sites = _ref.sites,\n data = _ref.data,\n closeText = _ref.closeText,\n onClick = _ref.onClick;\n return React.createElement(\"section\", {\n role: \"dialog\",\n \"aria-modal\": \"true\",\n className: \"web-share-fade-in-up\",\n style: IconsContainer\n }, React.createElement(Header, {\n title: data.title\n }), React.createElement(\"div\", {\n style: IconsLisStyle\n }, sites.map(function (name) {\n return React.createElement(Icon, {\n name: name,\n key: name,\n data: data,\n onClose: onClose,\n onClick: onClick\n });\n })), React.createElement(CloseButton, {\n onClose: onClose,\n closeText: closeText\n }));\n}\n\nfunction useDisclosure(isOpenDefault) {\n if (isOpenDefault === void 0) {\n isOpenDefault = false;\n }\n\n var _useState = useState(isOpenDefault),\n isOpen = _useState[0],\n setIsOpen = _useState[1];\n\n var onOpen = useCallback(function () {\n return setIsOpen(true);\n }, []);\n var onClose = useCallback(function () {\n return setIsOpen(false);\n }, []);\n var onToggle = useCallback(function () {\n return setIsOpen(function (state) {\n return !state;\n });\n }, []);\n return {\n isOpen: isOpen,\n onOpen: onOpen,\n onClose: onClose,\n onToggle: onToggle\n };\n}\n\nvar defaultSites = /*#__PURE__*/Object.keys(iconList).slice(0, 8);\nvar RWebShare = function RWebShare(_ref) {\n var children = _ref.children,\n closeText = _ref.closeText,\n data = _ref.data,\n onClick = _ref.onClick,\n _ref$sites = _ref.sites,\n sites = _ref$sites === void 0 ? defaultSites : _ref$sites;\n\n var _useDisclosure = useDisclosure(),\n onOpen = _useDisclosure.onOpen,\n onClose = _useDisclosure.onClose,\n isOpen = _useDisclosure.isOpen;\n\n var shareData = useMemo(function () {\n return _extends({}, data, {\n title: data.title || \"share\",\n text: data.text || \"\",\n url: data.url || typeof window !== \"undefined\" && window.location.href || \"\"\n });\n }, [data]);\n\n var handleOnClick = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee() {\n return runtime_1.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!window.navigator.share) {\n _context.next = 12;\n break;\n }\n\n _context.prev = 1;\n _context.next = 4;\n return window.navigator.share(shareData);\n\n case 4:\n onClick();\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](1);\n console.warn(_context.t0);\n\n case 10:\n _context.next = 13;\n break;\n\n case 12:\n onOpen();\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[1, 7]]);\n }));\n\n return function handleOnClick() {\n return _ref2.apply(this, arguments);\n };\n }();\n\n return React.createElement(React.Fragment, null, cloneElement(children, _extends({}, children == null ? void 0 : children.props, {\n onClick: handleOnClick\n })), isOpen && React.createElement(PortalComponent, null, React.createElement(Backdrop, {\n onClose: onClose\n }, React.createElement(SocialIcons, {\n onClose: onClose,\n sites: sites,\n data: shareData,\n closeText: closeText,\n onClick: onClick\n }))));\n};\n\nexport { RWebShare };\n//# sourceMappingURL=react-web-share.esm.js.map\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","var EventListener = /** @class */ (function () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set;\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}());\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRfbGlzdGVuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFLRSx1QkFBWSxXQUF3QixFQUFFLFNBQWlCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsK0JBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVELGtDQUFVLEdBQVY7UUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsY0FBYztJQUNkLHdDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsMkNBQW1CLEdBQW5CLFVBQW9CLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELG1DQUFXLEdBQVgsVUFBWSxLQUFZO1FBQ3RCLElBQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QyxLQUFzQixVQUFhLEVBQWIsS0FBQSxJQUFJLENBQUMsUUFBUSxFQUFiLGNBQWEsRUFBYixJQUFhLEVBQUU7WUFBaEMsSUFBTSxPQUFPLFNBQUE7WUFDaEIsSUFBSSxhQUFhLENBQUMsMkJBQTJCLEVBQUU7Z0JBQzdDLE1BQUs7YUFDTjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsc0JBQUksbUNBQVE7YUFBWjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztnQkFDekQsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtnQkFDdEQsT0FBTyxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDckUsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDOzs7T0FBQTtJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQWhERCxJQWdEQzs7QUFFRCxxQkFBcUIsS0FBWTtJQUMvQixJQUFJLDZCQUE2QixJQUFJLEtBQUssRUFBRTtRQUMxQyxPQUFPLEtBQUssQ0FBQTtLQUNiO1NBQU07UUFDRyxJQUFBLDJEQUF3QixDQUFVO1FBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDMUIsMkJBQTJCLEVBQUUsS0FBSztZQUNsQyx3QkFBd0I7Z0JBQ3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUE7Z0JBQ3ZDLDBCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0tBQ0g7QUFDSCxDQUFDIn0=","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */ (function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) { return eventListener.connect(); });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) { return eventListener.disconnect(); });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values())\n .reduce(function (listeners, map) { return listeners.concat(Array.from(map.values())); }, []);\n },\n enumerable: true,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget, eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n return Dispatcher;\n}());\nexport { Dispatcher };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVoRDtJQUtFLG9CQUFZLFdBQXdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsMEJBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQUEsYUFBYSxJQUFJLE9BQUEsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUF2QixDQUF1QixDQUFDLENBQUE7U0FDdEU7SUFDSCxDQUFDO0lBRUQseUJBQUksR0FBSjtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLGFBQWEsSUFBSSxPQUFBLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBMUIsQ0FBMEIsQ0FBQyxDQUFBO1NBQ3pFO0lBQ0gsQ0FBQztJQUVELHNCQUFJLHNDQUFjO2FBQWxCO1lBQ0UsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLFVBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSyxPQUFBLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUExQyxDQUEwQyxFQUFFLEVBQXFCLENBQUMsQ0FBQTtRQUNsRyxDQUFDOzs7T0FBQTtJQUVELDRCQUE0QjtJQUU1QixjQUFjO0lBQ2QscUNBQWdCLEdBQWhCLFVBQWlCLE9BQWdCO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsY0FBYztJQUNkLHdDQUFtQixHQUFuQixVQUFvQixPQUFnQjtRQUNsQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixnQ0FBVyxHQUFYLFVBQVksS0FBWSxFQUFFLE9BQWUsRUFBRSxNQUFtQjtRQUFuQix1QkFBQSxFQUFBLFdBQW1CO1FBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFTLE9BQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRU8saURBQTRCLEdBQXBDLFVBQXFDLE9BQWdCO1FBQzNDLElBQUEsaUNBQVcsRUFBRSw2QkFBUyxDQUFZO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRU8sdUNBQWtCLEdBQTFCLFVBQTJCLFdBQXdCLEVBQUUsU0FBaUI7UUFDcEUsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDOUUsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDaEUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUMvQztRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3Q0FBbUIsR0FBM0IsVUFBNEIsV0FBd0IsRUFBRSxTQUFpQjtRQUNyRSxJQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUN4QjtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyx3REFBbUMsR0FBM0MsVUFBNEMsV0FBd0I7UUFDbEUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1NBQzFEO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBL0VELElBK0VDIn0=","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uX2Rlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uX2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsdUVBQXVFO0FBQ3ZFLElBQU0saUJBQWlCLEdBQUcsZ0RBQWdELENBQUE7QUFFMUUsTUFBTSxnQ0FBZ0MsZ0JBQXdCO0lBQzVELElBQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3RDLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDckQsT0FBTztRQUNMLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsU0FBUyxFQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdkIsVUFBVSxFQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCwwQkFBMEIsZUFBdUI7SUFDL0MsSUFBSSxlQUFlLElBQUksUUFBUSxFQUFFO1FBQy9CLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7U0FBTSxJQUFJLGVBQWUsSUFBSSxVQUFVLEVBQUU7UUFDeEMsT0FBTyxRQUFRLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBRUQsTUFBTSwrQkFBK0IsV0FBd0I7SUFDM0QsSUFBSSxXQUFXLElBQUksTUFBTSxFQUFFO1FBQ3pCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO1NBQU0sSUFBSSxXQUFXLElBQUksUUFBUSxFQUFFO1FBQ2xDLE9BQU8sVUFBVSxDQUFBO0tBQ2xCO0FBQ0gsQ0FBQyJ9","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */ (function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}());\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) { return \"click\"; },\n \"button\": function (e) { return \"click\"; },\n \"form\": function (e) { return \"submit\"; },\n \"input\": function (e) { return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\"; },\n \"select\": function (e) { return \"change\"; },\n \"textarea\": function (e) { return \"change\"; }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHbkc7SUFZRSxnQkFBWSxPQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFPLE9BQU8sQ0FBQTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFTLEtBQUssQ0FBQTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFBO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNoSCxJQUFJLENBQUMsVUFBVSxHQUFJLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBSSxVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFYTSxlQUFRLEdBQWYsVUFBZ0IsS0FBWTtRQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBV0QseUJBQVEsR0FBUjtRQUNFLElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQUksSUFBSSxDQUFDLGVBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM5RSxPQUFPLEtBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLFVBQUssSUFBSSxDQUFDLFVBQVUsU0FBSSxJQUFJLENBQUMsVUFBWSxDQUFBO0lBQ3JGLENBQUM7SUFFRCxzQkFBWSxtQ0FBZTthQUEzQjtZQUNFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQy9DLENBQUM7OztPQUFBO0lBQ0gsYUFBQztBQUFELENBQUMsQUE3QkQsSUE2QkM7O0FBRUQsSUFBTSxpQkFBaUIsR0FBd0Q7SUFDN0UsR0FBRyxFQUFTLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsUUFBUSxFQUFJLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBTyxFQUFQLENBQU87SUFDeEIsTUFBTSxFQUFNLFVBQUEsQ0FBQyxJQUFJLE9BQUEsUUFBUSxFQUFSLENBQVE7SUFDekIsT0FBTyxFQUFLLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUF2RCxDQUF1RDtJQUN4RSxRQUFRLEVBQUksVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtJQUN6QixVQUFVLEVBQUUsVUFBQSxDQUFDLElBQUksT0FBQSxRQUFRLEVBQVIsQ0FBUTtDQUMxQixDQUFBO0FBRUQsTUFBTSx3Q0FBd0MsT0FBZ0I7SUFDNUQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsRUFBRTtRQUNoQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzNDO0FBQ0gsQ0FBQztBQUVELGVBQWUsT0FBZTtJQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFCLENBQUMifQ==","var Binding = /** @class */ (function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n }\n catch (error) {\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element, index = _a.index;\n var detail = { identifier: identifier, controller: controller, element: element, index: index, event: event };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return true;\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}());\nexport { Binding };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBO0lBSUUsaUJBQVksT0FBZ0IsRUFBRSxNQUFjO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxzQkFBSSwwQkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBVyxHQUFYLFVBQVksS0FBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLDhCQUFTO2FBQWI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMkJBQU07YUFBVjtZQUNFLElBQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxVQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN4RCxJQUFJLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsT0FBTyxNQUFNLENBQUE7YUFDZDtZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBVyxJQUFJLENBQUMsTUFBTSx5Q0FBa0MsSUFBSSxDQUFDLFVBQVUsT0FBRyxDQUFDLENBQUE7UUFDN0YsQ0FBQzs7O09BQUE7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixLQUFZO1FBQ2xDLElBQUk7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3pDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDUixJQUFBLFNBQWlELEVBQS9DLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxFQUFFLGdCQUFLLENBQVM7WUFDdkQsSUFBTSxNQUFNLEdBQUcsRUFBRSxVQUFVLFlBQUEsRUFBRSxVQUFVLFlBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBb0IsSUFBSSxDQUFDLE1BQU0sT0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQzVFO0lBQ0gsQ0FBQztJQUVPLHNDQUFvQixHQUE1QixVQUE2QixLQUFZO1FBQ3ZDLElBQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQTtTQUNaO2FBQU0sSUFBSSxXQUFXLFlBQVksT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDL0M7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFBO1NBQ1o7SUFDSCxDQUFDO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQVksK0JBQVU7YUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQVksNEJBQU87YUFBbkI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQVksMEJBQUs7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBQ0gsY0FBQztBQUFELENBQUMsQUEzRUQsSUEyRUMifQ==","var ElementObserver = /** @class */ (function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver(function (mutations) { return _this.processMutations(mutations); });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) { tree = this.element; }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n return ElementObserver;\n}());\nexport { ElementObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBO0lBUUUseUJBQVksT0FBZ0IsRUFBRSxRQUFpQztRQUEvRCxpQkFPQztRQU5DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUE7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBQyxTQUFTLElBQUssT0FBQSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQWhDLENBQWdDLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNqRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDZjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7U0FDckI7SUFDSCxDQUFDO0lB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","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */ (function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}());\nexport { AttributeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlX29ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dHJpYnV0ZV9vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLG9CQUFvQixDQUFBO0FBUTdFO0lBTUUsMkJBQVksT0FBZ0IsRUFBRSxhQUFxQixFQUFFLFFBQW1DO1FBQ3RGLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQTtRQUNyQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFRO2FBQVo7WUFDRSxPQUFPLE1BQUksSUFBSSxDQUFDLGFBQWEsTUFBRyxDQUFBO1FBQ2xDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVELGdDQUFJLEdBQUo7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUE7UUFDckMsQ0FBQzs7O09BQUE7SUFFRCw0QkFBNEI7SUFFNUIsd0NBQVksR0FBWixVQUFhLE9BQWdCO1FBQzNCLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELCtDQUFtQixHQUFuQixVQUFvQixJQUFhO1FBQy9CLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUNuRCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVELDBDQUFjLEdBQWQsVUFBZSxPQUFnQjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ25FO0lBQ0gsQ0FBQztJQUVELDRDQUFnQixHQUFoQixVQUFpQixPQUFnQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ3JFO0lBQ0gsQ0FBQztJQUVELG1EQUF1QixHQUF2QixVQUF3QixPQUFnQixFQUFFLGFBQXFCO1FBQzdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUNyRixJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUNuRTtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFsRUQsSUFrRUMifQ==","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X29wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2V0X29wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxjQUFvQixHQUFtQixFQUFFLEdBQU0sRUFBRSxLQUFRO0lBQzdELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzVCLENBQUM7QUFFRCxNQUFNLGNBQW9CLEdBQW1CLEVBQUUsR0FBTSxFQUFFLEtBQVE7SUFDN0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0tBQ3JCO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxnQkFBc0IsR0FBbUIsRUFBRSxHQUFNO0lBQ3JELElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1FBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDIn0=","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */ (function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) { return values.concat(Array.from(set)); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) { return size + set.size; }, 0);\n },\n enumerable: true,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) { return set.has(value); });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey)\n .filter(function (_a) {\n var key = _a[0], values = _a[1];\n return values.has(value);\n })\n .map(function (_a) {\n var key = _a[0], values = _a[1];\n return key;\n });\n };\n return Multimap;\n}());\nexport { Multimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGltYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXVsdGltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUzQztJQUdFO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFBO0lBQ3pDLENBQUM7SUFFRCxzQkFBSSw0QkFBTTthQUFWO1lBQ0UsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7WUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSyxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUE5QixDQUE4QixFQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9FLENBQUM7OztPQUFBO0lBRUQsc0JBQUksMEJBQUk7YUFBUjtZQUNFLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFDLElBQUksRUFBRSxHQUFHLElBQUssT0FBQSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBZixDQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBTSxFQUFFLEtBQVE7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxzQkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBTyxHQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsMkJBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFkLENBQWMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxrQ0FBZSxHQUFmLFVBQWdCLEdBQU07UUFDcEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsa0NBQWUsR0FBZixVQUFnQixLQUFRO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2hDLE1BQU0sQ0FBQyxVQUFDLEVBQWE7Z0JBQVosV0FBRyxFQUFFLGNBQU07WUFBTSxPQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQWpCLENBQWlCLENBQUM7YUFDNUMsR0FBRyxDQUFDLFVBQUMsRUFBYTtnQkFBWixXQUFHLEVBQUUsY0FBTTtZQUFNLE9BQUEsR0FBRztRQUFILENBQUcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDSCxlQUFDO0FBQUQsQ0FBQyxBQWpERCxJQWlEQyJ9","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */ (function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map;\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap));\nexport { IndexedMultimap };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tdWx0aW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleGVkX211bHRpbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFM0M7SUFBMkMsbUNBQWM7SUFHdkQ7UUFBQSxZQUNFLGlCQUFPLFNBRVI7UUFEQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxDQUFBOztJQUM1QixDQUFDO0lBRUQsc0JBQUksbUNBQU07YUFBVjtZQUNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBRyxHQUFILFVBQUksR0FBTSxFQUFFLEtBQVE7UUFDbEIsaUJBQU0sR0FBRyxZQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVELGdDQUFNLEdBQU4sVUFBTyxHQUFNLEVBQUUsS0FBUTtRQUNyQixpQkFBTSxNQUFNLFlBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsa0NBQVEsR0FBUixVQUFTLEtBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCx5Q0FBZSxHQUFmLFVBQWdCLEtBQVE7UUFDdEIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBOUJELENBQTJDLFFBQVEsR0E4QmxEIn0=","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */ (function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element), unmatchedTokens = _a[0], matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenMatched(token); });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) { return _this.tokenUnmatched(token); });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(function (_a) {\n var previousToken = _a[0], currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}());\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) { return content.length; })\n .map(function (content, index) { return ({ element: element, attributeName: attributeName, content: content, index: index }); });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({ length: length }, function (_, index) { return [left[index], right[index]]; });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbl9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBNkIsTUFBTSxzQkFBc0IsQ0FBQTtBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFjN0M7SUFLRSwyQkFBWSxPQUFnQixFQUFFLGFBQXFCLEVBQUUsUUFBbUM7UUFDdEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksUUFBUSxDQUFBO0lBQ3JDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0NBQUksR0FBSjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsbUNBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsc0JBQUksc0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQTtRQUN2QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRDQUFhO2FBQWpCO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFBO1FBQzdDLENBQUM7OztPQUFBO0lBRUQsOEJBQThCO0lB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","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */ (function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n };\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return { value: value };\n }\n catch (error) {\n return { error: error };\n }\n };\n return ValueListObserver;\n}());\nexport { ValueListObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfbGlzdF9vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWx1ZV9saXN0X29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxpQkFBaUIsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQTtBQWEzRjtJQU1FLDJCQUFZLE9BQWdCLEVBQUUsYUFBcUIsRUFBRSxRQUFzQztRQUN6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQTtRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFJLHNDQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUE7UUFDdkMsQ0FBQzs7O09BQUE7SUFFRCxpQ0FBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxnQ0FBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxtQ0FBTyxHQUFQO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSxzQ0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNENBQWE7YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUE7UUFDN0MsQ0FBQzs7O09BQUE7SUFFRCx3Q0FBWSxHQUFaLFVBQWEsS0FBWTtRQUNmLElBQUEsdUJBQU8sQ0FBVTtRQUNqQixJQUFBLGtEQUFLLENBQXlDO1FBQ3RELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsMENBQWMsR0FBZCxVQUFlLEtBQVk7UUFDakIsSUFBQSx1QkFBTyxDQUFVO1FBQ2pCLElBQUEsa0RBQUssQ0FBeUM7UUFDdEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3BEO0lBQ0gsQ0FBQztJQUVPLG9EQUF3QixHQUFoQyxVQUFpQyxLQUFZO1FBQzNDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtTQUNqRDtRQUNELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFTyx3REFBNEIsR0FBcEMsVUFBcUMsT0FBZ0I7UUFDbkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQTtZQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQTtTQUN4RDtRQUNELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7SUFFTyxzQ0FBVSxHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQUk7WUFDRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JELE9BQU8sRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFBO1NBQ2pCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQTtTQUNqQjtJQUNILENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFqRkQsSUFpRkMifQ==","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */ (function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) { return _this.delegate.bindingDisconnected(binding); });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}());\nexport { BindingObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ19vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW5kaW5nX29ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUluQyxPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFNRSx5QkFBWSxPQUFnQixFQUFFLFFBQWlDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsK0JBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUMvQjtJQUNILENBQUM7SUFFRCw4QkFBSSxHQUFKO1FBQ0UsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELHNCQUFJLG9DQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQzdCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksdUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7UUFDaEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0Q0FBZTthQUFuQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUE7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtQ0FBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUM1QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHFDQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkQsQ0FBQzs7O09BQUE7SUFFTyx1Q0FBYSxHQUFyQixVQUFzQixNQUFjO1FBQ2xDLElBQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRU8sMENBQWdCLEdBQXhCLFVBQXlCLE1BQWM7UUFDckMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtTQUMzQztJQUNILENBQUM7SUFFTyw4Q0FBb0IsR0FBNUI7UUFBQSxpQkFHQztRQUZDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBMUMsQ0FBMEMsQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLDRDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQzdCLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDeEMsT0FBTyxNQUFNLENBQUE7U0FDZDtJQUNILENBQUM7SUFFRCw2Q0FBbUIsR0FBbkIsVUFBb0IsT0FBZ0IsRUFBRSxNQUFjO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELCtDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLE1BQWM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFsRkQsSUFrRkMifQ==","import { BindingObserver } from \"./binding_observer\";\nvar Context = /** @class */ (function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n try {\n this.controller.initialize();\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n try {\n this.controller.connect();\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) { detail = {}; }\n var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element;\n detail = Object.assign({ identifier: identifier, controller: controller, element: element }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}());\nexport { Context };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQVFwRDtJQU1FLGlCQUFZLE1BQWMsRUFBRSxLQUFZO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRWpFLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFBO1NBQzdCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQztJQUVELHlCQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRTVCLElBQUk7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQzFCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2pEO0lBQ0gsQ0FBQztJQUVELDRCQUFVLEdBQVY7UUFDRSxJQUFJO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtTQUM3QjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtTQUNwRDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELHNCQUFJLGdDQUFXO2FBQWY7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFBO1FBQ2hDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0JBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUE7UUFDL0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwyQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFBO1FBQ3BDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDM0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxrQ0FBYTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFDbkMsQ0FBQzs7O09BQUE7SUFFRCxpQkFBaUI7SUFFakIsNkJBQVcsR0FBWCxVQUFZLEtBQVksRUFBRSxPQUFlLEVBQUUsTUFBbUI7UUFBbkIsdUJBQUEsRUFBQSxXQUFtQjtRQUN0RCxJQUFBLFNBQTBDLEVBQXhDLDBCQUFVLEVBQUUsMEJBQVUsRUFBRSxvQkFBTyxDQUFTO1FBQ2hELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxZQUFBLEVBQUUsVUFBVSxZQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBUyxPQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUNILGNBQUM7QUFBRCxDQUFDLEFBdEVELElBc0VDIn0=","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\nvar extend = (function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: { value: Controller }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n function testReflectExtension() {\n var a = function () { this.a.call(this); };\n var b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return function (constructor) { return /** @class */ (function (_super) {\n __extends(Controller, _super);\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Controller;\n }(constructor)); };\n }\n})();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFPQSxjQUFjO0FBQ2QsTUFBTSwwQkFBMEIsVUFBc0I7SUFDcEQsT0FBTztRQUNMLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxxQkFBcUIsRUFBRSwwQkFBMEIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7S0FDcEYsQ0FBQTtBQUNILENBQUM7QUFFRCxvQ0FBb0MscUJBQTRDO0lBQzlFLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ2pELFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNuQixPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUQsSUFBTSxNQUFNLEdBQUcsQ0FBQztJQUdkLDJCQUFzRCxXQUFjO1FBQ2xFOztZQUNFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxhQUFhLENBQUE7UUFDOUQsQ0FBQztRQUVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzFELFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDbkMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDL0MsT0FBTyxVQUFpQixDQUFBO0lBQzFCLENBQUM7SUFFRDtRQUNFLElBQU0sQ0FBQyxHQUFHLGNBQXNCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBUSxDQUFBO1FBQzFELElBQU0sQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLGNBQVksQ0FBQyxDQUFBO1FBQzdCLE9BQU8sSUFBSSxDQUFDLENBQUE7SUFDZCxDQUFDO0lBRUQsSUFBSTtRQUNGLG9CQUFvQixFQUFFLENBQUE7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQTtLQUN6QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxVQUE0QixXQUFjLElBQUs7WUFBeUIsOEJBQVc7WUFBcEM7O1lBQXNDLENBQUM7WUFBRCxpQkFBQztRQUFELENBQUMsQUFBdkMsQ0FBeUIsV0FBVyxJQUFwQyxDQUF1QyxDQUFBO0tBQzlGO0FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQSJ9","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */ (function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n };\n return Module;\n}());\nexport { Module };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRW5DLE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHMUQ7SUFNRSxnQkFBWSxXQUF3QixFQUFFLFVBQXNCO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxzQkFBSSw4QkFBVTthQUFkO1lBQ0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtRQUNuQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHlDQUFxQjthQUF6QjtZQUNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQTtRQUM5QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFRO2FBQVo7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDM0MsQ0FBQzs7O09BQUE7SUFFRCx1Q0FBc0IsR0FBdEIsVUFBdUIsS0FBWTtRQUNqQyxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELDBDQUF5QixHQUF6QixVQUEwQixLQUFZO1FBQ3BDLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9DLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUE7U0FDckI7SUFDSCxDQUFDO0lBRU8scUNBQW9CLEdBQTVCLFVBQTZCLEtBQVk7UUFDdkMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQ3pDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBL0NELElBK0NDIn0=","var DataMap = /** @class */ (function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n }\n else {\n return false;\n }\n };\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}());\nexport { DataMap };\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) { return \"-\" + char.toLowerCase(); });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YV9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7SUFHRSxpQkFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxzQkFBSSw0QkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFVO2FBQWQ7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQzlCLENBQUM7OztPQUFBO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxxQkFBRyxHQUFILFVBQUksR0FBVyxFQUFFLEtBQWE7UUFDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQscUJBQUcsR0FBSCxVQUFJLEdBQVc7UUFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCx3QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDakMsT0FBTyxJQUFJLENBQUE7U0FDWjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUE7U0FDYjtJQUNILENBQUM7SUFFTyxpQ0FBZSxHQUF2QixVQUF3QixHQUFXO1FBQ2pDLE9BQU8sVUFBUSxJQUFJLENBQUMsVUFBVSxTQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUcsQ0FBQTtJQUNwRCxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7O0FBRUQsbUJBQW1CLEtBQWE7SUFDOUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFDLENBQUMsRUFBRSxJQUFJLElBQUssT0FBQSxNQUFJLElBQUksQ0FBQyxXQUFXLEVBQUksRUFBeEIsQ0FBd0IsQ0FBQyxDQUFBO0FBQ3pFLENBQUMifQ==","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsTUFBTSxzQ0FBc0MsYUFBcUIsRUFBRSxLQUFhO0lBQzlFLE9BQU8sTUFBSSxhQUFhLFlBQU0sS0FBSyxRQUFJLENBQUE7QUFDekMsQ0FBQyJ9","import { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */ (function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n return targetNames.map(function (targetName) { return _this.getSelectorForTargetName(targetName); }).join(\", \");\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n return TargetSet;\n}());\nexport { TargetSet };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXJnZXRfc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQUdFLG1CQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksaUNBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMxQixDQUFDOzs7T0FBQTtJQUVELHVCQUFHLEdBQUgsVUFBSSxVQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3RDLENBQUM7SUFFRCx3QkFBSSxHQUFKO1FBQUsscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzNCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCwyQkFBTyxHQUFQO1FBQVEscUJBQXdCO2FBQXhCLFVBQXdCLEVBQXhCLHFCQUF3QixFQUF4QixJQUF3QjtZQUF4QixnQ0FBd0I7O1FBQzlCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTyw2Q0FBeUIsR0FBakMsVUFBa0MsV0FBcUI7UUFBdkQsaUJBRUM7UUFEQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSxLQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQXpDLENBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVPLDRDQUF3QixHQUFoQyxVQUFpQyxVQUFrQjtRQUNqRCxJQUFNLGdCQUFnQixHQUFNLElBQUksQ0FBQyxVQUFVLFNBQUksVUFBWSxDQUFBO1FBQzNELE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBekNELElBeUNDIn0=","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\nvar Scope = /** @class */ (function () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n return elements.filter(function (element) { return _this.containsElement(element); });\n };\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}());\nexport { Scope };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RDtJQU9FLGVBQVksTUFBYyxFQUFFLFVBQWtCLEVBQUUsT0FBZ0I7UUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCwyQkFBVyxHQUFYLFVBQVksUUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRCwrQkFBZSxHQUFmLFVBQWdCLFFBQWdCO1FBQzlCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2pFLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELDhCQUFjLEdBQWQsVUFBZSxRQUFtQjtRQUFsQyxpQkFFQztRQURDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsK0JBQWUsR0FBZixVQUFnQixPQUFnQjtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNsRSxDQUFDO0lBRUQsc0JBQVkscUNBQWtCO2FBQTlCO1lBQ0UsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RixDQUFDOzs7T0FBQTtJQUNILFlBQUM7QUFBRCxDQUFDLEFBcENELElBb0NDIn0=","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */ (function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element, identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}());\nexport { ScopeObserver };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVfb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NvcGVfb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLEVBQVMsaUJBQWlCLEVBQTZCLE1BQU0sOEJBQThCLENBQUE7QUFPbEc7SUFRRSx1QkFBWSxPQUFnQixFQUFFLE1BQWMsRUFBRSxRQUErQjtRQUMzRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RixJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxPQUFPLENBQUE7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFBO0lBQ3pDLENBQUM7SUFFRCw2QkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCw0QkFBSSxHQUFKO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxzQkFBSSw4Q0FBbUI7YUFBdkI7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUE7UUFDeEMsQ0FBQzs7O09BQUE7SUFFRCwwQkFBMEI7SUFFMUIsY0FBYztJQUNkLDBDQUFrQixHQUFsQixVQUFtQixLQUFZO1FBQ3JCLElBQUEsdUJBQU8sRUFBRSwwQkFBbUIsQ0FBVTtRQUM5QyxJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUUxRSxJQUFJLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNuRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQzFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsY0FBYztJQUNkLDJDQUFtQixHQUFuQixVQUFvQixPQUFnQixFQUFFLEtBQVk7UUFDaEQsSUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUNwRCxJQUFJLGNBQWMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNkLDZDQUFxQixHQUFyQixVQUFzQixPQUFnQixFQUFFLEtBQVk7UUFDbEQsSUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDeEQsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8seURBQWlDLEdBQXpDLFVBQTBDLE9BQWdCO1FBQ3hELElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUE7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtTQUNsRTtRQUNELE9BQU8sa0JBQWtCLENBQUE7SUFDM0IsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQXpFRCxJQXlFQyJ9","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */ (function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) { return contexts.concat(module.contexts); }, []);\n },\n enumerable: true,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) { return context.element == element; });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.connectContextForScope(scope); });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) { return module.disconnectContextForScope(scope); });\n };\n return Router;\n}());\nexport { Router };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLGtCQUFrQixDQUFBO0FBRXZFO0lBTUUsZ0JBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsc0JBQUksMkJBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwQkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNoQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVDQUFtQjthQUF2QjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQTtRQUN4QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDJCQUFPO2FBQVg7WUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw0QkFBUTthQUFaO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FB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","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQVc7SUFDbkMsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGVBQWUsRUFBRSxhQUFhO0lBQzlCLGVBQWUsRUFBRSxhQUFhO0NBQy9CLENBQUEifQ==","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */ (function () {\n function Application(element, schema) {\n if (element === void 0) { element = document.documentElement; }\n if (schema === void 0) { schema = defaultSchema; }\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.router.start();\n this.dispatcher.start();\n return [2 /*return*/];\n }\n });\n });\n };\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({ identifier: identifier, controllerConstructor: controllerConstructor });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) { return _this.router.loadDefinition(definition); });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) { return _this.router.unloadIdentifier(identifier); });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) { return context.controller; });\n },\n enumerable: true,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}());\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n }\n else {\n resolve();\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVoRDtJQVlFLHFCQUFZLE9BQTJDLEVBQUUsTUFBOEI7UUFBM0Usd0JBQUEsRUFBQSxVQUFtQixRQUFRLENBQUMsZUFBZTtRQUFFLHVCQUFBLEVBQUEsc0JBQThCO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBWE0saUJBQUssR0FBWixVQUFhLE9BQWlCLEVBQUUsTUFBZTtRQUM3QyxJQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ25CLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFTSywyQkFBSyxHQUFYOzs7OzRCQUNFLHFCQUFNLFFBQVEsRUFBRSxFQUFBOzt3QkFBaEIsU0FBZ0IsQ0FBQTt3QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTs7Ozs7S0FDeEI7SUFFRCwwQkFBSSxHQUFKO1FB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","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n return defineLinkedProperties(prototype, (_a = {},\n _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n },\n _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n },\n _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n },\n _a));\n });\n}\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) { return targetNames.add(name); });\n return targetNames;\n }, new Set));\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors;\n}\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0X3Byb3BlcnRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFyZ2V0X3Byb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYztBQUNkLE1BQU0saUNBQWlDLFdBQXFCO0lBQzFELElBQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUE7SUFDdkMsSUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7O1FBQUksT0FBQSxzQkFBc0IsQ0FBQyxTQUFTO1lBQzFELEdBQUksSUFBSSxXQUFRLElBQUc7Z0JBQ2pCLEdBQUc7b0JBQ0QsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3RDLElBQUksTUFBTSxFQUFFO3dCQUNWLE9BQU8sTUFBTSxDQUFBO3FCQUNkO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQTJCLElBQUksQ0FBQyxVQUFVLFNBQUksSUFBSSxPQUFHLENBQUMsQ0FBQTtxQkFDdkU7Z0JBQ0gsQ0FBQzthQUNGO1lBQ0QsR0FBSSxJQUFJLFlBQVMsSUFBRztnQkFDbEIsR0FBRztvQkFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNuQyxDQUFDO2FBQ0Y7WUFDRCxHQUFDLFFBQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFRLElBQUc7Z0JBQ2hDLEdBQUc7b0JBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQzthQUNGO2dCQUNEO0lBckIwQixDQXFCMUIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQztBQUVELHNDQUFzQyxXQUFxQjtJQUN6RCxJQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFDLFdBQVcsRUFBRSxXQUFXO1FBQzFELCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQXJCLENBQXFCLENBQUMsQ0FBQTtRQUNuRixPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDLEVBQUUsSUFBSSxHQUFrQixDQUFDLENBQUMsQ0FBQTtBQUM3QixDQUFDO0FBRUQsb0NBQW9DLFdBQXFCO0lBQ3ZELElBQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQTtJQUNoQyxPQUFPLFdBQVcsRUFBRTtRQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQ2pEO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELHlDQUF5QyxXQUFxQjtJQUM1RCxJQUFNLFVBQVUsR0FBSSxXQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2xELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDcEQsQ0FBQztBQUVELGdDQUFnQyxNQUFXLEVBQUUsVUFBaUM7SUFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1FBQ25DLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRTtZQUNyQixJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1NBQ2hEO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsb0JBQW9CLElBQVk7SUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyJ9","import { defineTargetProperties } from \"./target_properties\";\nvar Controller = /** @class */ (function () {\n function Controller(context) {\n this.context = context;\n }\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.targets = [];\n return Controller;\n}());\nexport { Controller };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBTzVEO0lBU0Usb0JBQVksT0FBZ0I7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQU5NLGdCQUFLLEdBQVo7UUFDRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBTUQsc0JBQUksbUNBQVc7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUE7UUFDakMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSw2QkFBSzthQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksa0NBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ3hCLENBQUM7OztPQUFBO0lBRUQsK0JBQVUsR0FBVjtRQUNFLCtEQUErRDtJQUNqRSxDQUFDO0lBRUQsNEJBQU8sR0FBUDtRQUNFLG1GQUFtRjtJQUNyRixDQUFDO0lBRUQsK0JBQVUsR0FBVjtRQUNFLHdGQUF3RjtJQUMxRixDQUFDO0lBOUNNLGtCQUFPLEdBQWEsRUFBRSxDQUFBO0lBK0MvQixpQkFBQztDQUFBLEFBaERELElBZ0RDO1NBaERZLFVBQVUifQ==","/**\n * Used to ignore longer touches that are probably not\n * meant as a swipe by the user\n *\n * @constant ALLOWED_SWIPE_TIME\n */\nconst ALLOWED_SWIPE_TIME = 300;\n\nclass SwipeDetect {\n constructor(target, callback, threshold) {\n this.target = target;\n this.callback = callback;\n this.threshold = threshold;\n\n this.enable();\n }\n\n /**\n * Adds the event listeners needed to record a swipe\n *\n * @name enable\n */\n enable() {\n this.target.addEventListener('touchstart', this.recordTouchStartValues.bind(this));\n this.target.addEventListener('touchend', this.detectSwipeDirection.bind(this));\n }\n\n /**\n * Destroys event listeners, to be used when\n * unmounting components using SwipeDetect\n *\n * @name disable\n */\n disable() {\n this.target.removeEventListener('touchstart', this.recordTouchStartValues.bind(this));\n this.target.removeEventListener('touchend', this.detectSwipeDirection.bind(this));\n }\n\n /**\n * When a User starts a touch, record the\n * values for later computation in detectSwipeDirection\n *\n * @name recordTouchStartValues\n * @param {Object} e [DOM Event object]\n */\n recordTouchStartValues(e) {\n const touch = e.changedTouches[0];\n\n this.startX = touch.pageX;\n this.startY = touch.pageY;\n this.startTime = new Date().getTime();\n }\n\n /**\n * When a user ends a touch, use the start and end\n * values to determine the direction of the swipe\n *\n * @name detectSwipeDirection\n * @param {Object} e [DOM Event object]\n */\n detectSwipeDirection(e) {\n const touch = e.changedTouches[0];\n const distX = touch.pageX - this.startX;\n const distY = touch.pageY - this.startY;\n const absX = Math.abs(distX);\n const absY = Math.abs(distY);\n const elapsedTime = new Date().getTime() - this.startTime;\n\n if (elapsedTime > ALLOWED_SWIPE_TIME) return;\n\n switch(true) {\n case absX >= this.threshold && absX > absY && distX < 0:\n this.callback('left');\n break;\n case absX >= this.threshold && absX > absY && distX > 0:\n this.callback('right');\n break;\n case absY >= this.threshold && absY > absX && distY < 0:\n this.callback('up');\n break;\n case absY >= this.threshold && absY > absX && distY > 0:\n this.callback('down');\n break;\n }\n }\n}\n\n/**\n * Opens up the necessary event listeners on an element\n * to detect touch movement and then returns the direction\n * of that movement to the event handler\n *\n * @param {Object} target [DOM element for detection]\n * @param {function} callback [The function receiving direction]\n * @param {Int} threshold [the minimum pixels the swipe must have traveled to trigger detection]\n * @returns {Class}\n */\nexport default function(target, callback, threshold=150) {\n return new SwipeDetect(target, callback, threshold);\n}\n","!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).LazyLoad=t()}(this,(function(){\"use strict\";function n(){return n=Object.assign||function(n){for(var t=1;t1,r={elements_selector:\".lazy\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return n({},r,t)},l=function(n,t){var e,i=\"LazyLoad::Initialized\",o=new n(t);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(n){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},u=\"src\",s=\"srcset\",d=\"sizes\",f=\"poster\",_=\"llOriginalAttrs\",g=\"data\",v=\"loading\",b=\"loaded\",m=\"applied\",p=\"error\",h=\"native\",E=\"data-\",I=\"ll-status\",y=function(n,t){return n.getAttribute(E+t)},k=function(n){return y(n,I)},w=function(n,t){return function(n,t,e){var i=\"data-ll-status\";null!==e?n.setAttribute(i,e):n.removeAttribute(i)}(n,0,t)},A=function(n){return w(n,null)},L=function(n){return null===k(n)},O=function(n){return k(n)===h},x=[v,b,m,p],C=function(n,t,e,i){n&&(void 0===i?void 0===e?n(t):n(t,e):n(t,e,i))},N=function(n,t){o?n.classList.add(t):n.className+=(n.className?\" \":\"\")+t},M=function(n,t){o?n.classList.remove(t):n.className=n.className.replace(new RegExp(\"(^|\\\\s+)\"+t+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},z=function(n){return n.llTempImage},T=function(n,t){if(t){var e=t._observer;e&&e.unobserve(n)}},R=function(n,t){n&&(n.loadingCount+=t)},G=function(n,t){n&&(n.toLoadCount=t)},j=function(n){for(var t,e=[],i=0;t=n.children[i];i+=1)\"SOURCE\"===t.tagName&&e.push(t);return e},D=function(n,t){var e=n.parentNode;e&&\"PICTURE\"===e.tagName&&j(e).forEach(t)},H=function(n,t){j(n).forEach(t)},V=[u],F=[u,f],B=[u,s,d],J=[g],P=function(n){return!!n[_]},S=function(n){return n[_]},U=function(n){return delete n[_]},$=function(n,t){if(!P(n)){var e={};t.forEach((function(t){e[t]=n.getAttribute(t)})),n[_]=e}},q=function(n,t){if(P(n)){var e=S(n);t.forEach((function(t){!function(n,t,e){e?n.setAttribute(t,e):n.removeAttribute(t)}(n,t,e[t])}))}},K=function(n,t,e){N(n,t.class_applied),w(n,m),e&&(t.unobserve_completed&&T(n,t),C(t.callback_applied,n,e))},Q=function(n,t,e){N(n,t.class_loading),w(n,v),e&&(R(e,1),C(t.callback_loading,n,e))},W=function(n,t,e){e&&n.setAttribute(t,e)},X=function(n,t){W(n,d,y(n,t.data_sizes)),W(n,s,y(n,t.data_srcset)),W(n,u,y(n,t.data_src))},Y={IMG:function(n,t){D(n,(function(n){$(n,B),X(n,t)})),$(n,B),X(n,t)},IFRAME:function(n,t){$(n,V),W(n,u,y(n,t.data_src))},VIDEO:function(n,t){H(n,(function(n){$(n,V),W(n,u,y(n,t.data_src))})),$(n,F),W(n,f,y(n,t.data_poster)),W(n,u,y(n,t.data_src)),n.load()},OBJECT:function(n,t){$(n,J),W(n,g,y(n,t.data_src))}},Z=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],nn=function(n,t){!t||function(n){return n.loadingCount>0}(t)||function(n){return n.toLoadCount>0}(t)||C(n.callback_finish,t)},tn=function(n,t,e){n.addEventListener(t,e),n.llEvLisnrs[t]=e},en=function(n,t,e){n.removeEventListener(t,e)},on=function(n){return!!n.llEvLisnrs},an=function(n){if(on(n)){var t=n.llEvLisnrs;for(var e in t){var i=t[e];en(n,e,i)}delete n.llEvLisnrs}},rn=function(n,t,e){!function(n){delete n.llTempImage}(n),R(e,-1),function(n){n&&(n.toLoadCount-=1)}(e),M(n,t.class_loading),t.unobserve_completed&&T(n,e)},cn=function(n,t,e){var i=z(n)||n;on(i)||function(n,t,e){on(n)||(n.llEvLisnrs={});var i=\"VIDEO\"===n.tagName?\"loadeddata\":\"load\";tn(n,i,t),tn(n,\"error\",e)}(i,(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_loaded),w(t,b),C(e.callback_loaded,t,i),o||nn(e,i)}(0,n,t,e),an(i)}),(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_error),w(t,p),C(e.callback_error,t,i),e.restore_on_error&&q(t,B),o||nn(e,i)}(0,n,t,e),an(i)}))},ln=function(n,t,e){!function(n){return Z.indexOf(n.tagName)>-1}(n)?function(n,t,e){!function(n){n.llTempImage=document.createElement(\"IMG\")}(n),cn(n,t,e),function(n){P(n)||(n[_]={backgroundImage:n.style.backgroundImage})}(n),function(n,t,e){var i=y(n,t.data_bg),o=y(n,t.data_bg_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage='url(\"'.concat(r,'\")'),z(n).setAttribute(u,r),Q(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_multi),o=y(n,t.data_bg_multi_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage=r,K(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_set);if(i){var o=i.split(\"|\"),a=o.map((function(n){return\"image-set(\".concat(n,\")\")}));n.style.backgroundImage=a.join(),\"\"===n.style.backgroundImage&&(a=o.map((function(n){return\"-webkit-image-set(\".concat(n,\")\")})),n.style.backgroundImage=a.join()),K(n,t,e)}}(n,t,e)}(n,t,e):function(n,t,e){cn(n,t,e),function(n,t,e){var i=Y[n.tagName];i&&(i(n,t),Q(n,t,e))}(n,t,e)}(n,t,e)},un=function(n){n.removeAttribute(u),n.removeAttribute(s),n.removeAttribute(d)},sn=function(n){D(n,(function(n){q(n,B)})),q(n,B)},dn={IMG:sn,IFRAME:function(n){q(n,V)},VIDEO:function(n){H(n,(function(n){q(n,V)})),q(n,F),n.load()},OBJECT:function(n){q(n,J)}},fn=function(n,t){(function(n){var t=dn[n.tagName];t?t(n):function(n){if(P(n)){var t=S(n);n.style.backgroundImage=t.backgroundImage}}(n)})(n),function(n,t){L(n)||O(n)||(M(n,t.class_entered),M(n,t.class_exited),M(n,t.class_applied),M(n,t.class_loading),M(n,t.class_loaded),M(n,t.class_error))}(n,t),A(n),U(n)},_n=[\"IMG\",\"IFRAME\",\"VIDEO\"],gn=function(n){return n.use_native&&\"loading\"in HTMLImageElement.prototype},vn=function(n,t,e){n.forEach((function(n){return function(n){return n.isIntersecting||n.intersectionRatio>0}(n)?function(n,t,e,i){var o=function(n){return x.indexOf(k(n))>=0}(n);w(n,\"entered\"),N(n,e.class_entered),M(n,e.class_exited),function(n,t,e){t.unobserve_entered&&T(n,e)}(n,e,i),C(e.callback_enter,n,t,i),o||ln(n,e,i)}(n.target,n,t,e):function(n,t,e,i){L(n)||(N(n,e.class_exited),function(n,t,e,i){e.cancel_on_exit&&function(n){return k(n)===v}(n)&&\"IMG\"===n.tagName&&(an(n),function(n){D(n,(function(n){un(n)})),un(n)}(n),sn(n),M(n,e.class_loading),R(i,-1),A(n),C(e.callback_cancel,n,t,i))}(n,t,e,i),C(e.callback_exit,n,t,i))}(n.target,n,t,e)}))},bn=function(n){return Array.prototype.slice.call(n)},mn=function(n){return n.container.querySelectorAll(n.elements_selector)},pn=function(n){return function(n){return k(n)===p}(n)},hn=function(n,t){return function(n){return bn(n).filter(L)}(n||mn(t))},En=function(n,e){var o=c(n);this._settings=o,this.loadingCount=0,function(n,t){i&&!gn(n)&&(t._observer=new IntersectionObserver((function(e){vn(e,n,t)}),function(n){return{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+\"px\"}}(n)))}(o,this),function(n,e){t&&(e._onlineHandler=function(){!function(n,t){var e;(e=mn(n),bn(e).filter(pn)).forEach((function(t){M(t,n.class_error),A(t)})),t.update()}(n,e)},window.addEventListener(\"online\",e._onlineHandler))}(o,this),this.update(e)};return En.prototype={update:function(n){var t,o,a=this._settings,r=hn(n,a);G(this,r.length),!e&&i?gn(a)?function(n,t,e){n.forEach((function(n){-1!==_n.indexOf(n.tagName)&&function(n,t,e){n.setAttribute(\"loading\",\"lazy\"),cn(n,t,e),function(n,t){var e=Y[n.tagName];e&&e(n,t)}(n,t),w(n,h)}(n,t,e)})),G(e,0)}(r,a,this):(o=r,function(n){n.disconnect()}(t=this._observer),function(n,t){t.forEach((function(t){n.observe(t)}))}(t,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener(\"online\",this._onlineHandler),mn(this._settings).forEach((function(n){U(n)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var t=this,e=this._settings;hn(n,e).forEach((function(n){T(n,t),ln(n,e,t)}))},restoreAll:function(){var n=this._settings;mn(n).forEach((function(t){fn(t,n)}))}},En.load=function(n,t){var e=c(t);ln(n,e)},En.resetStatus=function(n){A(n)},t&&function(n,t){if(t)if(t.length)for(var e,i=0;e=t[i];i+=1)l(n,e);else l(n,t)}(En,window.lazyLoadOptions),En}));\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _redux = require(\"redux\");\n\nvar _reducers = _interopRequireDefault(require(\"./reducers\"));\n\nvar playerActions = _interopRequireWildcard(require(\"./actions/player\"));\n\nvar videoActions = _interopRequireWildcard(require(\"./actions/video\"));\n\nvar Manager =\n/*#__PURE__*/\nfunction () {\n function Manager(store) {\n (0, _classCallCheck2[\"default\"])(this, Manager);\n this.store = store || (0, _redux.createStore)(_reducers[\"default\"]);\n this.video = null;\n this.rootElement = null;\n }\n\n (0, _createClass2[\"default\"])(Manager, [{\n key: \"getActions\",\n value: function getActions() {\n var manager = this;\n var dispatch = this.store.dispatch;\n var actions = (0, _objectSpread2[\"default\"])({}, playerActions, videoActions);\n\n function bindActionCreator(actionCreator) {\n return function bindAction() {\n // eslint-disable-next-line prefer-rest-params\n var action = actionCreator.apply(manager, arguments);\n\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n return Object.keys(actions).filter(function (key) {\n return typeof actions[key] === 'function';\n }).reduce(function (boundActions, key) {\n boundActions[key] = bindActionCreator(actions[key]);\n return boundActions;\n }, {});\n }\n }, {\n key: \"getState\",\n value: function getState() {\n return this.store.getState();\n } // subscribe state change\n\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, getState) {\n if (!getState) {\n getState = this.getState.bind(this);\n }\n\n var prevState = getState();\n\n var handleChange = function handleChange() {\n var state = getState();\n\n if (state === prevState) {\n return;\n }\n\n var prevStateCopy = prevState;\n prevState = state;\n listener(state, prevStateCopy);\n };\n\n return this.store.subscribe(handleChange);\n } // subscribe to operation state change\n\n }, {\n key: \"subscribeToOperationStateChange\",\n value: function subscribeToOperationStateChange(listener) {\n var _this = this;\n\n return this.subscribeToStateChange(listener, function () {\n return _this.getState().operation;\n });\n } // subscribe to player state change\n\n }, {\n key: \"subscribeToPlayerStateChange\",\n value: function subscribeToPlayerStateChange(listener) {\n var _this2 = this;\n\n return this.subscribeToStateChange(listener, function () {\n return _this2.getState().player;\n });\n }\n }]);\n return Manager;\n}();\n\nexports[\"default\"] = Manager;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleFullscreenChange = handleFullscreenChange;\nexports.activate = activate;\nexports.userActivate = userActivate;\nexports.play = play;\nexports.pause = pause;\nexports.togglePlay = togglePlay;\nexports.seek = seek;\nexports.forward = forward;\nexports.replay = replay;\nexports.changeRate = changeRate;\nexports.changeVolume = changeVolume;\nexports.mute = mute;\nexports.toggleFullscreen = toggleFullscreen;\nexports.USER_ACTIVATE = exports.PLAYER_ACTIVATE = exports.FULLSCREEN_CHANGE = exports.OPERATE = void 0;\n\nvar _fullscreen = _interopRequireDefault(require(\"../utils/fullscreen\"));\n\nvar OPERATE = 'video-react/OPERATE';\nexports.OPERATE = OPERATE;\nvar FULLSCREEN_CHANGE = 'video-react/FULLSCREEN_CHANGE';\nexports.FULLSCREEN_CHANGE = FULLSCREEN_CHANGE;\nvar PLAYER_ACTIVATE = 'video-react/PLAYER_ACTIVATE';\nexports.PLAYER_ACTIVATE = PLAYER_ACTIVATE;\nvar USER_ACTIVATE = 'video-react/USER_ACTIVATE';\nexports.USER_ACTIVATE = USER_ACTIVATE;\n\nfunction handleFullscreenChange(isFullscreen) {\n return {\n type: FULLSCREEN_CHANGE,\n isFullscreen: isFullscreen\n };\n}\n\nfunction activate(activity) {\n return {\n type: PLAYER_ACTIVATE,\n activity: activity\n };\n}\n\nfunction userActivate(activity) {\n return {\n type: USER_ACTIVATE,\n activity: activity\n };\n}\n\nfunction play() {\n var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n action: 'play',\n source: ''\n };\n this.video.play();\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction pause() {\n var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n action: 'pause',\n source: ''\n };\n this.video.pause();\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction togglePlay() {\n var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n action: 'toggle-play',\n source: ''\n };\n this.video.togglePlay();\n return {\n type: OPERATE,\n operation: operation\n };\n} // seek video by time\n\n\nfunction seek(time) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: 'seek',\n source: ''\n };\n this.video.seek(time);\n return {\n type: OPERATE,\n operation: operation\n };\n} // jump forward x seconds\n\n\nfunction forward(seconds) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: \"forward-\".concat(seconds),\n source: ''\n };\n this.video.forward(seconds);\n return {\n type: OPERATE,\n operation: operation\n };\n} // jump back x seconds\n\n\nfunction replay(seconds) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: \"replay-\".concat(seconds),\n source: ''\n };\n this.video.replay(seconds);\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction changeRate(rate) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: 'change-rate',\n source: ''\n };\n this.video.playbackRate = rate;\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction changeVolume(volume) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: 'change-volume',\n source: ''\n };\n var v = volume;\n\n if (volume < 0) {\n v = 0;\n }\n\n if (volume > 1) {\n v = 1;\n }\n\n this.video.volume = v;\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction mute(muted) {\n var operation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n action: muted ? 'muted' : 'unmuted',\n source: ''\n };\n this.video.muted = muted;\n return {\n type: OPERATE,\n operation: operation\n };\n}\n\nfunction toggleFullscreen(player) {\n if (_fullscreen[\"default\"].enabled) {\n if (_fullscreen[\"default\"].isFullscreen) {\n _fullscreen[\"default\"].exit();\n } else {\n _fullscreen[\"default\"].request(this.rootElement);\n }\n\n return {\n type: OPERATE,\n operation: {\n action: 'toggle-fullscreen',\n source: ''\n }\n };\n }\n\n return {\n type: FULLSCREEN_CHANGE,\n isFullscreen: !player.isFullscreen\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleLoadStart = handleLoadStart;\nexports.handleCanPlay = handleCanPlay;\nexports.handleWaiting = handleWaiting;\nexports.handleCanPlayThrough = handleCanPlayThrough;\nexports.handlePlaying = handlePlaying;\nexports.handlePlay = handlePlay;\nexports.handlePause = handlePause;\nexports.handleEnd = handleEnd;\nexports.handleSeeking = handleSeeking;\nexports.handleSeeked = handleSeeked;\nexports.handleDurationChange = handleDurationChange;\nexports.handleTimeUpdate = handleTimeUpdate;\nexports.handleVolumeChange = handleVolumeChange;\nexports.handleProgressChange = handleProgressChange;\nexports.handleRateChange = handleRateChange;\nexports.handleSuspend = handleSuspend;\nexports.handleAbort = handleAbort;\nexports.handleEmptied = handleEmptied;\nexports.handleStalled = handleStalled;\nexports.handleLoadedMetaData = handleLoadedMetaData;\nexports.handleLoadedData = handleLoadedData;\nexports.handleResize = handleResize;\nexports.handleError = handleError;\nexports.handleSeekingTime = handleSeekingTime;\nexports.handleEndSeeking = handleEndSeeking;\nexports.activateTextTrack = activateTextTrack;\nexports.ACTIVATE_TEXT_TRACK = exports.ERROR = exports.RESIZE = exports.LOADED_DATA = exports.LOADED_META_DATA = exports.STALLED = exports.EMPTIED = exports.ABORT = exports.SUSPEND = exports.RATE_CHANGE = exports.PROGRESS_CHANGE = exports.VOLUME_CHANGE = exports.TIME_UPDATE = exports.DURATION_CHANGE = exports.END_SEEKING = exports.SEEKING_TIME = exports.SEEKED = exports.SEEKING = exports.END = exports.PAUSE = exports.PLAY = exports.PLAYING = exports.CAN_PLAY_THROUGH = exports.WAITING = exports.CAN_PLAY = exports.LOAD_START = void 0;\nvar LOAD_START = 'video-react/LOAD_START';\nexports.LOAD_START = LOAD_START;\nvar CAN_PLAY = 'video-react/CAN_PLAY';\nexports.CAN_PLAY = CAN_PLAY;\nvar WAITING = 'video-react/WAITING';\nexports.WAITING = WAITING;\nvar CAN_PLAY_THROUGH = 'video-react/CAN_PLAY_THROUGH';\nexports.CAN_PLAY_THROUGH = CAN_PLAY_THROUGH;\nvar PLAYING = 'video-react/PLAYING';\nexports.PLAYING = PLAYING;\nvar PLAY = 'video-react/PLAY';\nexports.PLAY = PLAY;\nvar PAUSE = 'video-react/PAUSE';\nexports.PAUSE = PAUSE;\nvar END = 'video-react/END';\nexports.END = END;\nvar SEEKING = 'video-react/SEEKING';\nexports.SEEKING = SEEKING;\nvar SEEKED = 'video-react/SEEKED';\nexports.SEEKED = SEEKED;\nvar SEEKING_TIME = 'video-react/SEEKING_TIME';\nexports.SEEKING_TIME = SEEKING_TIME;\nvar END_SEEKING = 'video-react/END_SEEKING';\nexports.END_SEEKING = END_SEEKING;\nvar DURATION_CHANGE = 'video-react/DURATION_CHANGE';\nexports.DURATION_CHANGE = DURATION_CHANGE;\nvar TIME_UPDATE = 'video-react/TIME_UPDATE';\nexports.TIME_UPDATE = TIME_UPDATE;\nvar VOLUME_CHANGE = 'video-react/VOLUME_CHANGE';\nexports.VOLUME_CHANGE = VOLUME_CHANGE;\nvar PROGRESS_CHANGE = 'video-react/PROGRESS_CHANGE';\nexports.PROGRESS_CHANGE = PROGRESS_CHANGE;\nvar RATE_CHANGE = 'video-react/RATE_CHANGE';\nexports.RATE_CHANGE = RATE_CHANGE;\nvar SUSPEND = 'video-react/SUSPEND';\nexports.SUSPEND = SUSPEND;\nvar ABORT = 'video-react/ABORT';\nexports.ABORT = ABORT;\nvar EMPTIED = 'video-react/EMPTIED';\nexports.EMPTIED = EMPTIED;\nvar STALLED = 'video-react/STALLED';\nexports.STALLED = STALLED;\nvar LOADED_META_DATA = 'video-react/LOADED_META_DATA';\nexports.LOADED_META_DATA = LOADED_META_DATA;\nvar LOADED_DATA = 'video-react/LOADED_DATA';\nexports.LOADED_DATA = LOADED_DATA;\nvar RESIZE = 'video-react/RESIZE';\nexports.RESIZE = RESIZE;\nvar ERROR = 'video-react/ERROR';\nexports.ERROR = ERROR;\nvar ACTIVATE_TEXT_TRACK = 'video-react/ACTIVATE_TEXT_TRACK';\nexports.ACTIVATE_TEXT_TRACK = ACTIVATE_TEXT_TRACK;\n\nfunction handleLoadStart(videoProps) {\n return {\n type: LOAD_START,\n videoProps: videoProps\n };\n}\n\nfunction handleCanPlay(videoProps) {\n return {\n type: CAN_PLAY,\n videoProps: videoProps\n };\n}\n\nfunction handleWaiting(videoProps) {\n return {\n type: WAITING,\n videoProps: videoProps\n };\n}\n\nfunction handleCanPlayThrough(videoProps) {\n return {\n type: CAN_PLAY_THROUGH,\n videoProps: videoProps\n };\n}\n\nfunction handlePlaying(videoProps) {\n return {\n type: PLAYING,\n videoProps: videoProps\n };\n}\n\nfunction handlePlay(videoProps) {\n return {\n type: PLAY,\n videoProps: videoProps\n };\n}\n\nfunction handlePause(videoProps) {\n return {\n type: PAUSE,\n videoProps: videoProps\n };\n}\n\nfunction handleEnd(videoProps) {\n return {\n type: END,\n videoProps: videoProps\n };\n}\n\nfunction handleSeeking(videoProps) {\n return {\n type: SEEKING,\n videoProps: videoProps\n };\n}\n\nfunction handleSeeked(videoProps) {\n return {\n type: SEEKED,\n videoProps: videoProps\n };\n}\n\nfunction handleDurationChange(videoProps) {\n return {\n type: DURATION_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleTimeUpdate(videoProps) {\n return {\n type: TIME_UPDATE,\n videoProps: videoProps\n };\n}\n\nfunction handleVolumeChange(videoProps) {\n return {\n type: VOLUME_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleProgressChange(videoProps) {\n return {\n type: PROGRESS_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleRateChange(videoProps) {\n return {\n type: RATE_CHANGE,\n videoProps: videoProps\n };\n}\n\nfunction handleSuspend(videoProps) {\n return {\n type: SUSPEND,\n videoProps: videoProps\n };\n}\n\nfunction handleAbort(videoProps) {\n return {\n type: ABORT,\n videoProps: videoProps\n };\n}\n\nfunction handleEmptied(videoProps) {\n return {\n type: EMPTIED,\n videoProps: videoProps\n };\n}\n\nfunction handleStalled(videoProps) {\n return {\n type: STALLED,\n videoProps: videoProps\n };\n}\n\nfunction handleLoadedMetaData(videoProps) {\n return {\n type: LOADED_META_DATA,\n videoProps: videoProps\n };\n}\n\nfunction handleLoadedData(videoProps) {\n return {\n type: LOADED_DATA,\n videoProps: videoProps\n };\n}\n\nfunction handleResize(videoProps) {\n return {\n type: RESIZE,\n videoProps: videoProps\n };\n}\n\nfunction handleError(videoProps) {\n return {\n type: ERROR,\n videoProps: videoProps\n };\n}\n\nfunction handleSeekingTime(time) {\n return {\n type: SEEKING_TIME,\n time: time\n };\n}\n\nfunction handleEndSeeking(time) {\n return {\n type: END_SEEKING,\n time: time\n };\n}\n\nfunction activateTextTrack(textTrack) {\n return {\n type: ACTIVATE_TEXT_TRACK,\n textTrack: textTrack\n };\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n manager: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nvar Bezel =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Bezel, _Component);\n\n function Bezel(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Bezel);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Bezel).call(this, props, context));\n _this.timer = null;\n props.manager.subscribeToOperationStateChange(_this.handleStateChange.bind((0, _assertThisInitialized2[\"default\"])(_this)));\n _this.state = {\n hidden: true,\n operation: {}\n };\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Bezel, [{\n key: \"handleStateChange\",\n value: function handleStateChange(state, prevState) {\n var _this2 = this;\n\n if (state.count !== prevState.count && state.operation.source === 'shortcut') {\n if (this.timer) {\n // previous animation is not finished\n clearTimeout(this.timer); // cancel it\n\n this.timer = null;\n } // show it\n // update operation\n\n\n this.setState({\n hidden: false,\n count: state.count,\n operation: state.operation\n }); // hide it after 0.5s\n\n this.timer = setTimeout(function () {\n _this2.setState({\n hidden: true\n });\n\n _this2.timer = null;\n }, 500);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n // only displays for shortcut so far\n if (this.state.operation.source !== 'shortcut') {\n return null;\n }\n\n var style = this.state.hidden ? {\n display: 'none'\n } : null;\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])({\n 'video-react-bezel': true,\n 'video-react-bezel-animation': this.state.count % 2 === 0,\n 'video-react-bezel-animation-alt': this.state.count % 2 === 1\n }, this.props.className),\n style: style,\n role: \"status\",\n \"aria-label\": this.state.operation.action\n }, _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-bezel-icon', \"video-react-bezel-icon-\".concat(this.state.operation.action))\n }));\n }\n }]);\n return Bezel;\n}(_react.Component);\n\nexports[\"default\"] = Bezel;\nBezel.propTypes = propTypes;\nBezel.displayName = 'Bezel';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n position: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n position: 'left'\n};\n\nvar BigPlayButton =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(BigPlayButton, _Component);\n\n function BigPlayButton(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, BigPlayButton);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(BigPlayButton).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(BigPlayButton, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {}\n }, {\n key: \"handleClick\",\n value: function handleClick() {\n var actions = this.props.actions;\n actions.play();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n player = _this$props.player,\n position = _this$props.position;\n return _react[\"default\"].createElement(\"button\", {\n className: (0, _classnames[\"default\"])('video-react-big-play-button', \"video-react-big-play-button-\".concat(position), this.props.className, {\n 'big-play-button-hide': player.hasStarted || !player.currentSrc\n }),\n type: \"button\",\n \"aria-live\": \"polite\",\n tabIndex: \"0\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Play Video\"));\n }\n }]);\n return BigPlayButton;\n}(_react.Component);\n\nexports[\"default\"] = BigPlayButton;\nBigPlayButton.propTypes = propTypes;\nBigPlayButton.defaultProps = defaultProps;\nBigPlayButton.displayName = 'BigPlayButton';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n tagName: _propTypes[\"default\"].string,\n onClick: _propTypes[\"default\"].func.isRequired,\n onFocus: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n tagName: 'div'\n};\n\nvar ClickableComponent =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(ClickableComponent, _Component);\n\n function ClickableComponent(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ClickableComponent);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(ClickableComponent).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeypress = _this.handleKeypress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ClickableComponent, [{\n key: \"handleKeypress\",\n value: function handleKeypress(event) {\n // Support Space (32) or Enter (13) key operation to fire a click event\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event) {\n var onClick = this.props.onClick;\n onClick(event);\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus(e) {\n document.addEventListener('keydown', this.handleKeypress);\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeypress);\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var Tag = this.props.tagName;\n var props = (0, _objectSpread2[\"default\"])({}, this.props);\n delete props.tagName;\n delete props.className;\n return _react[\"default\"].createElement(Tag, (0, _extends2[\"default\"])({\n className: (0, _classnames[\"default\"])(this.props.className),\n role: \"button\",\n tabIndex: \"0\",\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, props));\n }\n }]);\n return ClickableComponent;\n}(_react.Component);\n\nexports[\"default\"] = ClickableComponent;\nClickableComponent.propTypes = propTypes;\nClickableComponent.defaultProps = defaultProps;\nClickableComponent.displayName = 'ClickableComponent';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = LoadingSpinner;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction LoadingSpinner(_ref) {\n var player = _ref.player,\n className = _ref.className;\n\n if (player.error) {\n return null;\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-loading-spinner', className)\n });\n}\n\nLoadingSpinner.propTypes = propTypes;\nLoadingSpinner.displayName = 'LoadingSpinner';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _Manager = _interopRequireDefault(require(\"../Manager\"));\n\nvar _BigPlayButton = _interopRequireDefault(require(\"./BigPlayButton\"));\n\nvar _LoadingSpinner = _interopRequireDefault(require(\"./LoadingSpinner\"));\n\nvar _PosterImage = _interopRequireDefault(require(\"./PosterImage\"));\n\nvar _Video = _interopRequireDefault(require(\"./Video\"));\n\nvar _Bezel = _interopRequireDefault(require(\"./Bezel\"));\n\nvar _Shortcut = _interopRequireDefault(require(\"./Shortcut\"));\n\nvar _ControlBar = _interopRequireDefault(require(\"./control-bar/ControlBar\"));\n\nvar browser = _interopRequireWildcard(require(\"../utils/browser\"));\n\nvar _dom = require(\"../utils/dom\");\n\nvar _utils = require(\"../utils\");\n\nvar _fullscreen = _interopRequireDefault(require(\"../utils/fullscreen\"));\n\nvar propTypes = {\n children: _propTypes[\"default\"].any,\n width: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number]),\n height: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number]),\n fluid: _propTypes[\"default\"].bool,\n muted: _propTypes[\"default\"].bool,\n playsInline: _propTypes[\"default\"].bool,\n aspectRatio: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string,\n videoId: _propTypes[\"default\"].string,\n startTime: _propTypes[\"default\"].number,\n loop: _propTypes[\"default\"].bool,\n autoPlay: _propTypes[\"default\"].bool,\n src: _propTypes[\"default\"].string,\n poster: _propTypes[\"default\"].string,\n preload: _propTypes[\"default\"].oneOf(['auto', 'metadata', 'none']),\n onLoadStart: _propTypes[\"default\"].func,\n onWaiting: _propTypes[\"default\"].func,\n onCanPlay: _propTypes[\"default\"].func,\n onCanPlayThrough: _propTypes[\"default\"].func,\n onPlaying: _propTypes[\"default\"].func,\n onEnded: _propTypes[\"default\"].func,\n onSeeking: _propTypes[\"default\"].func,\n onSeeked: _propTypes[\"default\"].func,\n onPlay: _propTypes[\"default\"].func,\n onPause: _propTypes[\"default\"].func,\n onProgress: _propTypes[\"default\"].func,\n onDurationChange: _propTypes[\"default\"].func,\n onError: _propTypes[\"default\"].func,\n onSuspend: _propTypes[\"default\"].func,\n onAbort: _propTypes[\"default\"].func,\n onEmptied: _propTypes[\"default\"].func,\n onStalled: _propTypes[\"default\"].func,\n onLoadedMetadata: _propTypes[\"default\"].func,\n onLoadedData: _propTypes[\"default\"].func,\n onTimeUpdate: _propTypes[\"default\"].func,\n onRateChange: _propTypes[\"default\"].func,\n onVolumeChange: _propTypes[\"default\"].func,\n store: _propTypes[\"default\"].object\n};\nvar defaultProps = {\n fluid: true,\n muted: false,\n playsInline: false,\n preload: 'auto',\n aspectRatio: 'auto'\n};\n\nvar Player =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Player, _Component);\n\n function Player(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Player);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Player).call(this, props));\n _this.controlsHideTimer = null;\n _this.video = null; // the Video component\n\n _this.manager = new _Manager[\"default\"](props.store);\n _this.actions = _this.manager.getActions();\n\n _this.manager.subscribeToPlayerStateChange(_this.handleStateChange.bind((0, _assertThisInitialized2[\"default\"])(_this)));\n\n _this.getStyle = _this.getStyle.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleResize = _this.handleResize.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getChildren = _this.getChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseMove = (0, _utils.throttle)(_this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this)), 250);\n _this.handleMouseDown = _this.handleMouseDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.startControlsTimer = _this.startControlsTimer.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFullScreenChange = _this.handleFullScreenChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Player, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n _fullscreen[\"default\"].addEventListener(this.handleFullScreenChange);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // Remove event listener\n window.removeEventListener('resize', this.handleResize);\n\n _fullscreen[\"default\"].removeEventListener(this.handleFullScreenChange);\n\n if (this.controlsHideTimer) {\n window.clearTimeout(this.controlsHideTimer);\n }\n }\n }, {\n key: \"getDefaultChildren\",\n value: function getDefaultChildren(originalChildren) {\n var _this2 = this;\n\n return [_react[\"default\"].createElement(_Video[\"default\"], {\n ref: function ref(c) {\n _this2.video = c;\n _this2.manager.video = _this2.video;\n },\n key: \"video\",\n order: 0.0\n }, originalChildren), _react[\"default\"].createElement(_PosterImage[\"default\"], {\n key: \"poster-image\",\n order: 1.0\n }), _react[\"default\"].createElement(_LoadingSpinner[\"default\"], {\n key: \"loading-spinner\",\n order: 2.0\n }), _react[\"default\"].createElement(_Bezel[\"default\"], {\n key: \"bezel\",\n order: 3.0\n }), _react[\"default\"].createElement(_BigPlayButton[\"default\"], {\n key: \"big-play-button\",\n order: 4.0\n }), _react[\"default\"].createElement(_ControlBar[\"default\"], {\n key: \"control-bar\",\n order: 5.0\n }), _react[\"default\"].createElement(_Shortcut[\"default\"], {\n key: \"shortcut\",\n order: 99.0\n })];\n }\n }, {\n key: \"getChildren\",\n value: function getChildren(props) {\n var _ = props.className,\n originalChildren = props.children,\n propsWithoutChildren = (0, _objectWithoutProperties2[\"default\"])(props, [\"className\", \"children\"]);\n\n var children = _react[\"default\"].Children.toArray(this.props.children).filter(function (e) {\n return !(0, _utils.isVideoChild)(e);\n });\n\n var defaultChildren = this.getDefaultChildren(originalChildren);\n return (0, _utils.mergeAndSortChildren)(defaultChildren, children, propsWithoutChildren);\n }\n }, {\n key: \"setWidthOrHeight\",\n value: function setWidthOrHeight(style, name, value) {\n var styleVal;\n\n if (typeof value === 'string') {\n if (value === 'auto') {\n styleVal = 'auto';\n } else if (value.match(/\\d+%/)) {\n styleVal = value;\n }\n } else if (typeof value === 'number') {\n styleVal = \"\".concat(value, \"px\");\n }\n\n Object.assign(style, (0, _defineProperty2[\"default\"])({}, name, styleVal));\n }\n }, {\n key: \"getStyle\",\n value: function getStyle() {\n var _this$props = this.props,\n fluid = _this$props.fluid,\n propsAspectRatio = _this$props.aspectRatio,\n propsHeight = _this$props.height,\n propsWidth = _this$props.width;\n\n var _this$manager$getStat = this.manager.getState(),\n player = _this$manager$getStat.player;\n\n var style = {};\n var width;\n var height;\n var aspectRatio; // The aspect ratio is either used directly or to calculate width and height.\n\n if (propsAspectRatio !== undefined && propsAspectRatio !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = propsAspectRatio;\n } else if (player.videoWidth) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = \"\".concat(player.videoWidth, \":\").concat(player.videoHeight);\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n } // Get the ratio as a decimal we can use to calculate dimensions\n\n\n var ratioParts = aspectRatio.split(':');\n var ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (propsWidth !== undefined) {\n // Use any width that's been specifically set\n width = propsWidth;\n } else if (propsHeight !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = propsHeight / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = player.videoWidth || 400;\n }\n\n if (propsHeight !== undefined) {\n // Use any height that's been specifically set\n height = propsHeight;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n if (fluid) {\n style.paddingTop = \"\".concat(ratioMultiplier * 100, \"%\");\n } else {\n // If Width contains \"auto\", set \"auto\" in style\n this.setWidthOrHeight(style, 'width', width);\n this.setWidthOrHeight(style, 'height', height);\n }\n\n return style;\n } // get redux state\n // { player, operation }\n\n }, {\n key: \"getState\",\n value: function getState() {\n return this.manager.getState();\n } // get playback rate\n\n }, {\n key: \"play\",\n // play the video\n value: function play() {\n this.video.play();\n } // pause the video\n\n }, {\n key: \"pause\",\n value: function pause() {\n this.video.pause();\n } // Change the video source and re-load the video:\n\n }, {\n key: \"load\",\n value: function load() {\n this.video.load();\n } // Add a new text track to the video\n\n }, {\n key: \"addTextTrack\",\n value: function addTextTrack() {\n var _this$video;\n\n (_this$video = this.video).addTextTrack.apply(_this$video, arguments);\n } // Check if your browser can play different types of video:\n\n }, {\n key: \"canPlayType\",\n value: function canPlayType() {\n var _this$video2;\n\n (_this$video2 = this.video).canPlayType.apply(_this$video2, arguments);\n } // seek video by time\n\n }, {\n key: \"seek\",\n value: function seek(time) {\n this.video.seek(time);\n } // jump forward x seconds\n\n }, {\n key: \"forward\",\n value: function forward(seconds) {\n this.video.forward(seconds);\n } // jump back x seconds\n\n }, {\n key: \"replay\",\n value: function replay(seconds) {\n this.video.replay(seconds);\n } // enter or exist full screen\n\n }, {\n key: \"toggleFullscreen\",\n value: function toggleFullscreen() {\n this.video.toggleFullscreen();\n } // subscribe to player state change\n\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener) {\n return this.manager.subscribeToPlayerStateChange(listener);\n } // player resize\n\n }, {\n key: \"handleResize\",\n value: function handleResize() {}\n }, {\n key: \"handleFullScreenChange\",\n value: function handleFullScreenChange(event) {\n if (event.target === this.manager.rootElement) {\n this.actions.handleFullscreenChange(_fullscreen[\"default\"].isFullscreen);\n }\n }\n }, {\n key: \"handleMouseDown\",\n value: function handleMouseDown() {\n this.startControlsTimer();\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove() {\n this.startControlsTimer();\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown() {\n this.startControlsTimer();\n }\n }, {\n key: \"startControlsTimer\",\n value: function startControlsTimer() {\n var _this3 = this;\n\n var controlBarActiveTime = 3000;\n\n _react[\"default\"].Children.forEach(this.props.children, function (element) {\n if (!_react[\"default\"].isValidElement(element) || element.type !== _ControlBar[\"default\"]) {\n return;\n }\n\n var autoHideTime = element.props.autoHideTime;\n\n if (typeof autoHideTime === 'number') {\n controlBarActiveTime = autoHideTime;\n }\n });\n\n this.actions.userActivate(true);\n clearTimeout(this.controlsHideTimer);\n this.controlsHideTimer = setTimeout(function () {\n _this3.actions.userActivate(false);\n }, controlBarActiveTime);\n }\n }, {\n key: \"handleStateChange\",\n value: function handleStateChange(state, prevState) {\n if (state.isFullscreen !== prevState.isFullscreen) {\n this.handleResize(); // focus root when switching fullscreen mode to avoid confusion #276\n\n (0, _dom.focusNode)(this.manager.rootElement);\n }\n\n this.forceUpdate(); // re-render\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus() {\n this.actions.activate(true);\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur() {\n this.actions.activate(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var fluid = this.props.fluid;\n\n var _this$manager$getStat2 = this.manager.getState(),\n player = _this$manager$getStat2.player;\n\n var paused = player.paused,\n hasStarted = player.hasStarted,\n waiting = player.waiting,\n seeking = player.seeking,\n isFullscreen = player.isFullscreen,\n userActivity = player.userActivity;\n var props = (0, _objectSpread2[\"default\"])({}, this.props, {\n player: player,\n actions: this.actions,\n manager: this.manager,\n store: this.manager.store,\n video: this.video ? this.video.video : null\n });\n var children = this.getChildren(props);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])({\n 'video-react-controls-enabled': true,\n 'video-react-has-started': hasStarted,\n 'video-react-paused': paused,\n 'video-react-playing': !paused,\n 'video-react-waiting': waiting,\n 'video-react-seeking': seeking,\n 'video-react-fluid': fluid,\n 'video-react-fullscreen': isFullscreen,\n 'video-react-user-inactive': !userActivity,\n 'video-react-user-active': userActivity,\n 'video-react-workinghover': !browser.IS_IOS\n }, 'video-react', this.props.className),\n style: this.getStyle(),\n ref: function ref(c) {\n _this4.manager.rootElement = c;\n },\n role: \"region\",\n onTouchStart: this.handleMouseDown,\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleMouseMove,\n onMouseMove: this.handleMouseMove,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n tabIndex: \"-1\"\n }, children);\n }\n }, {\n key: \"playbackRate\",\n get: function get() {\n return this.video.playbackRate;\n } // set playback rate\n // speed of video\n ,\n set: function set(rate) {\n this.video.playbackRate = rate;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this.video.muted;\n },\n set: function set(val) {\n this.video.muted = val;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this.video.volume;\n },\n set: function set(val) {\n this.video.volume = val;\n } // video width\n\n }, {\n key: \"videoWidth\",\n get: function get() {\n return this.video.videoWidth;\n } // video height\n\n }, {\n key: \"videoHeight\",\n get: function get() {\n return this.video.videoHeight;\n }\n }]);\n return Player;\n}(_react.Component);\n\nexports[\"default\"] = Player;\nPlayer.contextTypes = {\n store: _propTypes[\"default\"].object\n};\nPlayer.propTypes = propTypes;\nPlayer.defaultProps = defaultProps;\nPlayer.displayName = 'Player';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n poster: _propTypes[\"default\"].string,\n player: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction PosterImage(_ref) {\n var poster = _ref.poster,\n player = _ref.player,\n actions = _ref.actions,\n className = _ref.className;\n\n if (!poster || player.hasStarted) {\n return null;\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-poster', className),\n style: {\n backgroundImage: \"url(\\\"\".concat(poster, \"\\\")\")\n },\n onClick: function onClick() {\n if (player.paused) {\n actions.play();\n }\n }\n });\n}\n\nPosterImage.propTypes = propTypes;\nPosterImage.displayName = 'PosterImage';\nvar _default = PosterImage;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = require(\"react\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dom = require(\"../utils/dom\");\n\nvar propTypes = {\n clickable: _propTypes[\"default\"].bool,\n dblclickable: _propTypes[\"default\"].bool,\n manager: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n shortcuts: _propTypes[\"default\"].array\n};\nvar defaultProps = {\n clickable: true,\n dblclickable: true\n};\n\nvar Shortcut =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Shortcut, _Component);\n\n function Shortcut(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Shortcut);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Shortcut).call(this, props, context));\n _this.defaultShortcuts = [{\n keyCode: 32,\n // spacebar\n handle: _this.togglePlay\n }, {\n keyCode: 75,\n // k\n handle: _this.togglePlay\n }, {\n keyCode: 70,\n // f\n handle: _this.toggleFullscreen\n }, {\n keyCode: 37,\n // Left arrow\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.replay(5, {\n action: 'replay-5',\n source: 'shortcut'\n }); // Go back 5 seconds\n }\n }, {\n keyCode: 74,\n // j\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.replay(10, {\n action: 'replay-10',\n source: 'shortcut'\n }); // Go back 10 seconds\n }\n }, {\n keyCode: 39,\n // Right arrow\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.forward(5, {\n action: 'forward-5',\n source: 'shortcut'\n }); // Go forward 5 seconds\n }\n }, {\n keyCode: 76,\n // l\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.forward(10, {\n action: 'forward-10',\n source: 'shortcut'\n }); // Go forward 10 seconds\n }\n }, {\n keyCode: 36,\n // Home\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n }\n\n actions.seek(0); // Go to beginning of video\n }\n }, {\n keyCode: 35,\n // End\n handle: function handle(player, actions) {\n if (!player.hasStarted) {\n return;\n } // Go to end of video\n\n\n actions.seek(player.duration);\n }\n }, {\n keyCode: 38,\n // Up arrow\n handle: function handle(player, actions) {\n // Increase volume 5%\n var v = player.volume + 0.05;\n\n if (v > 1) {\n v = 1;\n }\n\n actions.changeVolume(v, {\n action: 'volume-up',\n source: 'shortcut'\n });\n }\n }, {\n keyCode: 40,\n // Down arrow\n handle: function handle(player, actions) {\n // Decrease volume 5%\n var v = player.volume - 0.05;\n\n if (v < 0) {\n v = 0;\n }\n\n var action = v > 0 ? 'volume-down' : 'volume-off';\n actions.changeVolume(v, {\n action: action,\n source: 'shortcut'\n });\n }\n }, {\n keyCode: 190,\n // Shift + >\n shift: true,\n handle: function handle(player, actions) {\n // Increase speed\n var playbackRate = player.playbackRate;\n\n if (playbackRate >= 1.5) {\n playbackRate = 2;\n } else if (playbackRate >= 1.25) {\n playbackRate = 1.5;\n } else if (playbackRate >= 1.0) {\n playbackRate = 1.25;\n } else if (playbackRate >= 0.5) {\n playbackRate = 1.0;\n } else if (playbackRate >= 0.25) {\n playbackRate = 0.5;\n } else if (playbackRate >= 0) {\n playbackRate = 0.25;\n }\n\n actions.changeRate(playbackRate, {\n action: 'fast-forward',\n source: 'shortcut'\n });\n }\n }, {\n keyCode: 188,\n // Shift + <\n shift: true,\n handle: function handle(player, actions) {\n // Decrease speed\n var playbackRate = player.playbackRate;\n\n if (playbackRate <= 0.5) {\n playbackRate = 0.25;\n } else if (playbackRate <= 1.0) {\n playbackRate = 0.5;\n } else if (playbackRate <= 1.25) {\n playbackRate = 1.0;\n } else if (playbackRate <= 1.5) {\n playbackRate = 1.25;\n } else if (playbackRate <= 2) {\n playbackRate = 1.5;\n }\n\n actions.changeRate(playbackRate, {\n action: 'fast-rewind',\n source: 'shortcut'\n });\n }\n }];\n _this.shortcuts = (0, _toConsumableArray2[\"default\"])(_this.defaultShortcuts);\n _this.mergeShortcuts = _this.mergeShortcuts.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyPress = _this.handleKeyPress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleDoubleClick = _this.handleDoubleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Shortcut, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mergeShortcuts();\n document.addEventListener('keydown', this.handleKeyPress);\n document.addEventListener('click', this.handleClick);\n document.addEventListener('dblclick', this.handleDoubleClick);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.shortcuts !== this.props.shortcuts) {\n this.mergeShortcuts();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyPress);\n document.removeEventListener('click', this.handleClick);\n document.removeEventListener('dblclick', this.handleDoubleClick);\n } // merge the shortcuts from props\n\n }, {\n key: \"mergeShortcuts\",\n value: function mergeShortcuts() {\n var getShortcutKey = function getShortcutKey(_ref) {\n var _ref$keyCode = _ref.keyCode,\n keyCode = _ref$keyCode === void 0 ? 0 : _ref$keyCode,\n _ref$ctrl = _ref.ctrl,\n ctrl = _ref$ctrl === void 0 ? false : _ref$ctrl,\n _ref$shift = _ref.shift,\n shift = _ref$shift === void 0 ? false : _ref$shift,\n _ref$alt = _ref.alt,\n alt = _ref$alt === void 0 ? false : _ref$alt;\n return \"\".concat(keyCode, \":\").concat(ctrl, \":\").concat(shift, \":\").concat(alt);\n };\n\n var defaultShortcuts = this.defaultShortcuts.reduce(function (shortcuts, shortcut) {\n return Object.assign(shortcuts, (0, _defineProperty2[\"default\"])({}, getShortcutKey(shortcut), shortcut));\n }, {});\n var mergedShortcuts = (this.props.shortcuts || []).reduce(function (shortcuts, shortcut) {\n var keyCode = shortcut.keyCode,\n handle = shortcut.handle;\n\n if (keyCode && typeof handle === 'function') {\n return Object.assign(shortcuts, (0, _defineProperty2[\"default\"])({}, getShortcutKey(shortcut), shortcut));\n }\n\n return shortcuts;\n }, defaultShortcuts);\n\n var gradeShortcut = function gradeShortcut(s) {\n var score = 0;\n var ps = ['ctrl', 'shift', 'alt'];\n ps.forEach(function (key) {\n if (s[key]) {\n score++;\n }\n });\n return score;\n };\n\n this.shortcuts = Object.keys(mergedShortcuts).map(function (key) {\n return mergedShortcuts[key];\n }).sort(function (a, b) {\n return gradeShortcut(b) - gradeShortcut(a);\n });\n }\n }, {\n key: \"togglePlay\",\n value: function togglePlay(player, actions) {\n if (player.paused) {\n actions.play({\n action: 'play',\n source: 'shortcut'\n });\n } else {\n actions.pause({\n action: 'pause',\n source: 'shortcut'\n });\n }\n }\n }, {\n key: \"toggleFullscreen\",\n value: function toggleFullscreen(player, actions) {\n actions.toggleFullscreen(player);\n }\n }, {\n key: \"handleKeyPress\",\n value: function handleKeyPress(e) {\n var _this$props = this.props,\n player = _this$props.player,\n actions = _this$props.actions;\n\n if (!player.isActive) {\n return;\n }\n\n if (document.activeElement && ((0, _dom.hasClass)(document.activeElement, 'video-react-control') || (0, _dom.hasClass)(document.activeElement, 'video-react-menu-button-active') // || hasClass(document.activeElement, 'video-react-slider')\n || (0, _dom.hasClass)(document.activeElement, 'video-react-big-play-button'))) {\n return;\n }\n\n var keyCode = e.keyCode || e.which;\n var ctrl = e.ctrlKey || e.metaKey;\n var shift = e.shiftKey;\n var alt = e.altKey;\n var shortcut = this.shortcuts.filter(function (s) {\n if (!s.keyCode || s.keyCode - keyCode !== 0) {\n return false;\n }\n\n if (s.ctrl !== undefined && s.ctrl !== ctrl || s.shift !== undefined && s.shift !== shift || s.alt !== undefined && s.alt !== alt) {\n return false;\n }\n\n return true;\n })[0];\n\n if (shortcut) {\n shortcut.handle(player, actions);\n e.preventDefault();\n }\n } // only if player is active and player is ready\n\n }, {\n key: \"canBeClicked\",\n value: function canBeClicked(player, e) {\n if (!player.isActive || e.target.nodeName !== 'VIDEO' || player.readyState !== 4) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(e) {\n var _this$props2 = this.props,\n player = _this$props2.player,\n actions = _this$props2.actions,\n clickable = _this$props2.clickable;\n\n if (!this.canBeClicked(player, e) || !clickable) {\n return;\n }\n\n this.togglePlay(player, actions); // e.preventDefault();\n }\n }, {\n key: \"handleDoubleClick\",\n value: function handleDoubleClick(e) {\n var _this$props3 = this.props,\n player = _this$props3.player,\n actions = _this$props3.actions,\n dblclickable = _this$props3.dblclickable;\n\n if (!this.canBeClicked(player, e) || !dblclickable) {\n return;\n }\n\n this.toggleFullscreen(player, actions); // e.preventDefault();\n } // this component dose not render anything\n // it's just for the key down event\n\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n return Shortcut;\n}(_react.Component);\n\nexports[\"default\"] = Shortcut;\nShortcut.propTypes = propTypes;\nShortcut.defaultProps = defaultProps;\nShortcut.displayName = 'Shortcut';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar Dom = _interopRequireWildcard(require(\"../utils/dom\"));\n\nvar propTypes = {\n className: _propTypes[\"default\"].string,\n onMouseDown: _propTypes[\"default\"].func,\n onMouseMove: _propTypes[\"default\"].func,\n stepForward: _propTypes[\"default\"].func,\n stepBack: _propTypes[\"default\"].func,\n sliderActive: _propTypes[\"default\"].func,\n sliderInactive: _propTypes[\"default\"].func,\n onMouseUp: _propTypes[\"default\"].func,\n onFocus: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func,\n onClick: _propTypes[\"default\"].func,\n getPercent: _propTypes[\"default\"].func,\n vertical: _propTypes[\"default\"].bool,\n children: _propTypes[\"default\"].node,\n label: _propTypes[\"default\"].string,\n valuenow: _propTypes[\"default\"].string,\n valuetext: _propTypes[\"default\"].string\n};\n\nvar Slider =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Slider, _Component);\n\n function Slider(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Slider);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Slider).call(this, props, context));\n _this.handleMouseDown = _this.handleMouseDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseMove = _this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseUp = _this.handleMouseUp.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyPress = _this.handleKeyPress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepForward = _this.stepForward.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepBack = _this.stepBack.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.calculateDistance = _this.calculateDistance.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getProgress = _this.getProgress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.renderChildren = _this.renderChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.state = {\n active: false\n };\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Slider, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('mousemove', this.handleMouseMove, true);\n document.removeEventListener('mouseup', this.handleMouseUp, true);\n document.removeEventListener('touchmove', this.handleMouseMove, true);\n document.removeEventListener('touchend', this.handleMouseUp, true);\n document.removeEventListener('keydown', this.handleKeyPress, true);\n }\n }, {\n key: \"getProgress\",\n value: function getProgress() {\n var getPercent = this.props.getPercent;\n\n if (!getPercent) {\n return 0;\n }\n\n var progress = getPercent(); // Protect against no duration and other division issues\n\n if (typeof progress !== 'number' || progress < 0 || progress === Infinity) {\n progress = 0;\n }\n\n return progress;\n }\n }, {\n key: \"handleMouseDown\",\n value: function handleMouseDown(event) {\n var onMouseDown = this.props.onMouseDown; // event.preventDefault();\n // event.stopPropagation();\n\n document.addEventListener('mousemove', this.handleMouseMove, true);\n document.addEventListener('mouseup', this.handleMouseUp, true);\n document.addEventListener('touchmove', this.handleMouseMove, true);\n document.addEventListener('touchend', this.handleMouseUp, true);\n this.setState({\n active: true\n });\n\n if (this.props.sliderActive) {\n this.props.sliderActive(event);\n }\n\n this.handleMouseMove(event);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove(event) {\n var onMouseMove = this.props.onMouseMove;\n\n if (onMouseMove) {\n onMouseMove(event);\n }\n }\n }, {\n key: \"handleMouseUp\",\n value: function handleMouseUp(event) {\n // On iOS safari, a subsequent mouseup event will be fired after touchend.\n // Its weird event positions make the player seek a wrong time.\n // calling preventDefault (at touchend phase) will prevent the mouseup event\n event.preventDefault();\n var onMouseUp = this.props.onMouseUp;\n document.removeEventListener('mousemove', this.handleMouseMove, true);\n document.removeEventListener('mouseup', this.handleMouseUp, true);\n document.removeEventListener('touchmove', this.handleMouseMove, true);\n document.removeEventListener('touchend', this.handleMouseUp, true);\n this.setState({\n active: false\n });\n\n if (this.props.sliderInactive) {\n this.props.sliderInactive(event);\n }\n\n if (onMouseUp) {\n onMouseUp(event);\n }\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus(e) {\n document.addEventListener('keydown', this.handleKeyPress, true);\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur(e) {\n document.removeEventListener('keydown', this.handleKeyPress, true);\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event) {\n event.preventDefault(); // event.stopPropagation();\n\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n }\n }, {\n key: \"handleKeyPress\",\n value: function handleKeyPress(event) {\n if (event.which === 37 || event.which === 40) {\n // Left and Down Arrows\n event.preventDefault();\n event.stopPropagation();\n this.stepBack();\n } else if (event.which === 38 || event.which === 39) {\n // Up and Right Arrows\n event.preventDefault();\n event.stopPropagation();\n this.stepForward();\n }\n }\n }, {\n key: \"stepForward\",\n value: function stepForward() {\n if (this.props.stepForward) {\n this.props.stepForward();\n }\n }\n }, {\n key: \"stepBack\",\n value: function stepBack() {\n if (this.props.stepBack) {\n this.props.stepBack();\n }\n }\n }, {\n key: \"calculateDistance\",\n value: function calculateDistance(event) {\n var node = this.slider;\n var position = Dom.getPointerPosition(node, event);\n\n if (this.props.vertical) {\n return position.y;\n }\n\n return position.x;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var progress = this.getProgress();\n var percentage = \"\".concat((progress * 100).toFixed(2), \"%\");\n return _react[\"default\"].Children.map(this.props.children, function (child) {\n return _react[\"default\"].cloneElement(child, {\n progress: progress,\n percentage: percentage\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n vertical = _this$props.vertical,\n label = _this$props.label,\n valuenow = _this$props.valuenow,\n valuetext = _this$props.valuetext;\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])(this.props.className, {\n 'video-react-slider-vertical': vertical,\n 'video-react-slider-horizontal': !vertical,\n 'video-react-sliding': this.state.active\n }, 'video-react-slider'),\n ref: function ref(c) {\n _this2.slider = c;\n },\n tabIndex: \"0\",\n role: \"slider\",\n onMouseDown: this.handleMouseDown,\n onTouchStart: this.handleMouseDown,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n \"aria-label\": label || '',\n \"aria-valuenow\": valuenow || '',\n \"aria-valuetext\": valuetext || '',\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100\n }, this.renderChildren());\n }\n }]);\n return Slider;\n}(_react.Component);\n\nexports[\"default\"] = Slider;\nSlider.propTypes = propTypes;\nSlider.displayName = 'Slider';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../utils\");\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n children: _propTypes[\"default\"].any,\n startTime: _propTypes[\"default\"].number,\n loop: _propTypes[\"default\"].bool,\n muted: _propTypes[\"default\"].bool,\n autoPlay: _propTypes[\"default\"].bool,\n playsInline: _propTypes[\"default\"].bool,\n src: _propTypes[\"default\"].string,\n poster: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string,\n preload: _propTypes[\"default\"].oneOf(['auto', 'metadata', 'none']),\n crossOrigin: _propTypes[\"default\"].string,\n onLoadStart: _propTypes[\"default\"].func,\n onWaiting: _propTypes[\"default\"].func,\n onCanPlay: _propTypes[\"default\"].func,\n onCanPlayThrough: _propTypes[\"default\"].func,\n onPlaying: _propTypes[\"default\"].func,\n onEnded: _propTypes[\"default\"].func,\n onSeeking: _propTypes[\"default\"].func,\n onSeeked: _propTypes[\"default\"].func,\n onPlay: _propTypes[\"default\"].func,\n onPause: _propTypes[\"default\"].func,\n onProgress: _propTypes[\"default\"].func,\n onDurationChange: _propTypes[\"default\"].func,\n onError: _propTypes[\"default\"].func,\n onSuspend: _propTypes[\"default\"].func,\n onAbort: _propTypes[\"default\"].func,\n onEmptied: _propTypes[\"default\"].func,\n onStalled: _propTypes[\"default\"].func,\n onLoadedMetadata: _propTypes[\"default\"].func,\n onLoadedData: _propTypes[\"default\"].func,\n onTimeUpdate: _propTypes[\"default\"].func,\n onRateChange: _propTypes[\"default\"].func,\n onVolumeChange: _propTypes[\"default\"].func,\n onResize: _propTypes[\"default\"].func\n};\n\nvar Video =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Video, _Component);\n\n function Video(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Video);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Video).call(this, props));\n _this.video = null; // the html5 video\n\n _this.play = _this.play.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.pause = _this.pause.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.seek = _this.seek.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.forward = _this.forward.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.replay = _this.replay.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.toggleFullscreen = _this.toggleFullscreen.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getProperties = _this.getProperties.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.renderChildren = _this.renderChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleLoadStart = _this.handleLoadStart.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleCanPlay = _this.handleCanPlay.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleCanPlayThrough = _this.handleCanPlayThrough.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePlay = _this.handlePlay.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePlaying = _this.handlePlaying.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePause = _this.handlePause.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleEnded = _this.handleEnded.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleWaiting = _this.handleWaiting.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSeeking = _this.handleSeeking.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSeeked = _this.handleSeeked.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFullscreenChange = _this.handleFullscreenChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleError = _this.handleError.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSuspend = _this.handleSuspend.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleAbort = _this.handleAbort.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleEmptied = _this.handleEmptied.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleStalled = _this.handleStalled.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleLoadedMetaData = _this.handleLoadedMetaData.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleLoadedData = _this.handleLoadedData.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleTimeUpdate = _this.handleTimeUpdate.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleRateChange = _this.handleRateChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleVolumeChange = _this.handleVolumeChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleDurationChange = _this.handleDurationChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleProgress = (0, _utils.throttle)(_this.handleProgress.bind((0, _assertThisInitialized2[\"default\"])(_this)), 250);\n _this.handleKeypress = _this.handleKeypress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleTextTrackChange = _this.handleTextTrackChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Video, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.forceUpdate(); // make sure the children can get the video property\n\n if (this.video && this.video.textTracks) {\n this.video.textTracks.onaddtrack = this.handleTextTrackChange;\n this.video.textTracks.onremovetrack = this.handleTextTrackChange;\n }\n } // get all video properties\n\n }, {\n key: \"getProperties\",\n value: function getProperties() {\n var _this2 = this;\n\n if (!this.video) {\n return null;\n }\n\n return _utils.mediaProperties.reduce(function (properties, key) {\n properties[key] = _this2.video[key];\n return properties;\n }, {});\n } // get playback rate\n\n }, {\n key: \"handleTextTrackChange\",\n value: function handleTextTrackChange() {\n var _this$props = this.props,\n actions = _this$props.actions,\n player = _this$props.player;\n\n if (this.video && this.video.textTracks) {\n var activeTextTrack = Array.from(this.video.textTracks).find(function (textTrack) {\n return textTrack.mode === 'showing';\n });\n\n if (activeTextTrack !== player.activeTextTrack) {\n actions.activateTextTrack(activeTextTrack);\n }\n }\n } // play the video\n\n }, {\n key: \"play\",\n value: function play() {\n var promise = this.video.play();\n\n if (promise !== undefined) {\n promise[\"catch\"](function () {}).then(function () {});\n }\n } // pause the video\n\n }, {\n key: \"pause\",\n value: function pause() {\n var promise = this.video.pause();\n\n if (promise !== undefined) {\n promise[\"catch\"](function () {}).then(function () {});\n }\n } // Change the video source and re-load the video:\n\n }, {\n key: \"load\",\n value: function load() {\n this.video.load();\n } // Add a new text track to the video\n\n }, {\n key: \"addTextTrack\",\n value: function addTextTrack() {\n var _this$video;\n\n (_this$video = this.video).addTextTrack.apply(_this$video, arguments);\n } // Check if your browser can play different types of video:\n\n }, {\n key: \"canPlayType\",\n value: function canPlayType() {\n var _this$video2;\n\n (_this$video2 = this.video).canPlayType.apply(_this$video2, arguments);\n } // toggle play\n\n }, {\n key: \"togglePlay\",\n value: function togglePlay() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n } // seek video by time\n\n }, {\n key: \"seek\",\n value: function seek(time) {\n try {\n this.video.currentTime = time;\n } catch (e) {// console.log(e, 'Video is not ready.')\n }\n } // jump forward x seconds\n\n }, {\n key: \"forward\",\n value: function forward(seconds) {\n this.seek(this.video.currentTime + seconds);\n } // jump back x seconds\n\n }, {\n key: \"replay\",\n value: function replay(seconds) {\n this.forward(-seconds);\n } // enter or exist full screen\n\n }, {\n key: \"toggleFullscreen\",\n value: function toggleFullscreen() {\n var _this$props2 = this.props,\n player = _this$props2.player,\n actions = _this$props2.actions;\n actions.toggleFullscreen(player);\n } // Fired when the user agent\n // begins looking for media data\n\n }, {\n key: \"handleLoadStart\",\n value: function handleLoadStart() {\n var _this$props3 = this.props,\n actions = _this$props3.actions,\n onLoadStart = _this$props3.onLoadStart;\n actions.handleLoadStart(this.getProperties());\n\n if (onLoadStart) {\n onLoadStart.apply(void 0, arguments);\n }\n } // A handler for events that\n // signal that waiting has ended\n\n }, {\n key: \"handleCanPlay\",\n value: function handleCanPlay() {\n var _this$props4 = this.props,\n actions = _this$props4.actions,\n onCanPlay = _this$props4.onCanPlay;\n actions.handleCanPlay(this.getProperties());\n\n if (onCanPlay) {\n onCanPlay.apply(void 0, arguments);\n }\n } // A handler for events that\n // signal that waiting has ended\n\n }, {\n key: \"handleCanPlayThrough\",\n value: function handleCanPlayThrough() {\n var _this$props5 = this.props,\n actions = _this$props5.actions,\n onCanPlayThrough = _this$props5.onCanPlayThrough;\n actions.handleCanPlayThrough(this.getProperties());\n\n if (onCanPlayThrough) {\n onCanPlayThrough.apply(void 0, arguments);\n }\n } // A handler for events that\n // signal that waiting has ended\n\n }, {\n key: \"handlePlaying\",\n value: function handlePlaying() {\n var _this$props6 = this.props,\n actions = _this$props6.actions,\n onPlaying = _this$props6.onPlaying;\n actions.handlePlaying(this.getProperties());\n\n if (onPlaying) {\n onPlaying.apply(void 0, arguments);\n }\n } // Fired whenever the media has been started\n\n }, {\n key: \"handlePlay\",\n value: function handlePlay() {\n var _this$props7 = this.props,\n actions = _this$props7.actions,\n onPlay = _this$props7.onPlay;\n actions.handlePlay(this.getProperties());\n\n if (onPlay) {\n onPlay.apply(void 0, arguments);\n }\n } // Fired whenever the media has been paused\n\n }, {\n key: \"handlePause\",\n value: function handlePause() {\n var _this$props8 = this.props,\n actions = _this$props8.actions,\n onPause = _this$props8.onPause;\n actions.handlePause(this.getProperties());\n\n if (onPause) {\n onPause.apply(void 0, arguments);\n }\n } // Fired when the duration of\n // the media resource is first known or changed\n\n }, {\n key: \"handleDurationChange\",\n value: function handleDurationChange() {\n var _this$props9 = this.props,\n actions = _this$props9.actions,\n onDurationChange = _this$props9.onDurationChange;\n actions.handleDurationChange(this.getProperties());\n\n if (onDurationChange) {\n onDurationChange.apply(void 0, arguments);\n }\n } // Fired while the user agent\n // is downloading media data\n\n }, {\n key: \"handleProgress\",\n value: function handleProgress() {\n var _this$props10 = this.props,\n actions = _this$props10.actions,\n onProgress = _this$props10.onProgress;\n\n if (this.video) {\n actions.handleProgressChange(this.getProperties());\n }\n\n if (onProgress) {\n onProgress.apply(void 0, arguments);\n }\n } // Fired when the end of the media resource\n // is reached (currentTime == duration)\n\n }, {\n key: \"handleEnded\",\n value: function handleEnded() {\n var _this$props11 = this.props,\n loop = _this$props11.loop,\n player = _this$props11.player,\n actions = _this$props11.actions,\n onEnded = _this$props11.onEnded;\n\n if (loop) {\n this.seek(0);\n this.play();\n } else if (!player.paused) {\n this.pause();\n }\n\n actions.handleEnd(this.getProperties());\n\n if (onEnded) {\n onEnded.apply(void 0, arguments);\n }\n } // Fired whenever the media begins waiting\n\n }, {\n key: \"handleWaiting\",\n value: function handleWaiting() {\n var _this$props12 = this.props,\n actions = _this$props12.actions,\n onWaiting = _this$props12.onWaiting;\n actions.handleWaiting(this.getProperties());\n\n if (onWaiting) {\n onWaiting.apply(void 0, arguments);\n }\n } // Fired whenever the player\n // is jumping to a new time\n\n }, {\n key: \"handleSeeking\",\n value: function handleSeeking() {\n var _this$props13 = this.props,\n actions = _this$props13.actions,\n onSeeking = _this$props13.onSeeking;\n actions.handleSeeking(this.getProperties());\n\n if (onSeeking) {\n onSeeking.apply(void 0, arguments);\n }\n } // Fired when the player has\n // finished jumping to a new time\n\n }, {\n key: \"handleSeeked\",\n value: function handleSeeked() {\n var _this$props14 = this.props,\n actions = _this$props14.actions,\n onSeeked = _this$props14.onSeeked;\n actions.handleSeeked(this.getProperties());\n\n if (onSeeked) {\n onSeeked.apply(void 0, arguments);\n }\n } // Handle Fullscreen Change\n\n }, {\n key: \"handleFullscreenChange\",\n value: function handleFullscreenChange() {} // Fires when the browser is\n // intentionally not getting media data\n\n }, {\n key: \"handleSuspend\",\n value: function handleSuspend() {\n var _this$props15 = this.props,\n actions = _this$props15.actions,\n onSuspend = _this$props15.onSuspend;\n actions.handleSuspend(this.getProperties());\n\n if (onSuspend) {\n onSuspend.apply(void 0, arguments);\n }\n } // Fires when the loading of an audio/video is aborted\n\n }, {\n key: \"handleAbort\",\n value: function handleAbort() {\n var _this$props16 = this.props,\n actions = _this$props16.actions,\n onAbort = _this$props16.onAbort;\n actions.handleAbort(this.getProperties());\n\n if (onAbort) {\n onAbort.apply(void 0, arguments);\n }\n } // Fires when the current playlist is empty\n\n }, {\n key: \"handleEmptied\",\n value: function handleEmptied() {\n var _this$props17 = this.props,\n actions = _this$props17.actions,\n onEmptied = _this$props17.onEmptied;\n actions.handleEmptied(this.getProperties());\n\n if (onEmptied) {\n onEmptied.apply(void 0, arguments);\n }\n } // Fires when the browser is trying to\n // get media data, but data is not available\n\n }, {\n key: \"handleStalled\",\n value: function handleStalled() {\n var _this$props18 = this.props,\n actions = _this$props18.actions,\n onStalled = _this$props18.onStalled;\n actions.handleStalled(this.getProperties());\n\n if (onStalled) {\n onStalled.apply(void 0, arguments);\n }\n } // Fires when the browser has loaded\n // meta data for the audio/video\n\n }, {\n key: \"handleLoadedMetaData\",\n value: function handleLoadedMetaData() {\n var _this$props19 = this.props,\n actions = _this$props19.actions,\n onLoadedMetadata = _this$props19.onLoadedMetadata,\n startTime = _this$props19.startTime;\n\n if (startTime && startTime > 0) {\n this.video.currentTime = startTime;\n }\n\n actions.handleLoadedMetaData(this.getProperties());\n\n if (onLoadedMetadata) {\n onLoadedMetadata.apply(void 0, arguments);\n }\n } // Fires when the browser has loaded\n // the current frame of the audio/video\n\n }, {\n key: \"handleLoadedData\",\n value: function handleLoadedData() {\n var _this$props20 = this.props,\n actions = _this$props20.actions,\n onLoadedData = _this$props20.onLoadedData;\n actions.handleLoadedData(this.getProperties());\n\n if (onLoadedData) {\n onLoadedData.apply(void 0, arguments);\n }\n } // Fires when the current\n // playback position has changed\n\n }, {\n key: \"handleTimeUpdate\",\n value: function handleTimeUpdate() {\n var _this$props21 = this.props,\n actions = _this$props21.actions,\n onTimeUpdate = _this$props21.onTimeUpdate;\n actions.handleTimeUpdate(this.getProperties());\n\n if (onTimeUpdate) {\n onTimeUpdate.apply(void 0, arguments);\n }\n }\n /**\n * Fires when the playing speed of the audio/video is changed\n */\n\n }, {\n key: \"handleRateChange\",\n value: function handleRateChange() {\n var _this$props22 = this.props,\n actions = _this$props22.actions,\n onRateChange = _this$props22.onRateChange;\n actions.handleRateChange(this.getProperties());\n\n if (onRateChange) {\n onRateChange.apply(void 0, arguments);\n }\n } // Fires when the volume has been changed\n\n }, {\n key: \"handleVolumeChange\",\n value: function handleVolumeChange() {\n var _this$props23 = this.props,\n actions = _this$props23.actions,\n onVolumeChange = _this$props23.onVolumeChange;\n actions.handleVolumeChange(this.getProperties());\n\n if (onVolumeChange) {\n onVolumeChange.apply(void 0, arguments);\n }\n } // Fires when an error occurred\n // during the loading of an audio/video\n\n }, {\n key: \"handleError\",\n value: function handleError() {\n var _this$props24 = this.props,\n actions = _this$props24.actions,\n onError = _this$props24.onError;\n actions.handleError(this.getProperties());\n\n if (onError) {\n onError.apply(void 0, arguments);\n }\n }\n }, {\n key: \"handleResize\",\n value: function handleResize() {\n var _this$props25 = this.props,\n actions = _this$props25.actions,\n onResize = _this$props25.onResize;\n actions.handleResize(this.getProperties());\n\n if (onResize) {\n onResize.apply(void 0, arguments);\n }\n }\n }, {\n key: \"handleKeypress\",\n value: function handleKeypress() {}\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this3 = this;\n\n var props = (0, _objectSpread2[\"default\"])({}, this.props, {\n video: this.video\n }); // to make sure the children can get video property\n\n if (!this.video) {\n return null;\n } // only keep , , elements\n\n\n return _react[\"default\"].Children.toArray(this.props.children).filter(_utils.isVideoChild).map(function (c) {\n var cprops;\n\n if (typeof c.type === 'string') {\n // add onError to \n if (c.type === 'source') {\n cprops = (0, _objectSpread2[\"default\"])({}, c.props);\n var preOnError = cprops.onError;\n\n cprops.onError = function () {\n if (preOnError) {\n preOnError.apply(void 0, arguments);\n }\n\n _this3.handleError.apply(_this3, arguments);\n };\n }\n } else {\n cprops = props;\n }\n\n return _react[\"default\"].cloneElement(c, cprops);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$props26 = this.props,\n loop = _this$props26.loop,\n poster = _this$props26.poster,\n preload = _this$props26.preload,\n src = _this$props26.src,\n autoPlay = _this$props26.autoPlay,\n playsInline = _this$props26.playsInline,\n muted = _this$props26.muted,\n crossOrigin = _this$props26.crossOrigin,\n videoId = _this$props26.videoId;\n return _react[\"default\"].createElement(\"video\", {\n className: (0, _classnames[\"default\"])('video-react-video', this.props.className),\n id: videoId,\n crossOrigin: crossOrigin,\n ref: function ref(c) {\n _this4.video = c;\n },\n muted: muted,\n preload: preload,\n loop: loop,\n playsInline: playsInline,\n autoPlay: autoPlay,\n poster: poster,\n src: src,\n onLoadStart: this.handleLoadStart,\n onWaiting: this.handleWaiting,\n onCanPlay: this.handleCanPlay,\n onCanPlayThrough: this.handleCanPlayThrough,\n onPlaying: this.handlePlaying,\n onEnded: this.handleEnded,\n onSeeking: this.handleSeeking,\n onSeeked: this.handleSeeked,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onProgress: this.handleProgress,\n onDurationChange: this.handleDurationChange,\n onError: this.handleError,\n onSuspend: this.handleSuspend,\n onAbort: this.handleAbort,\n onEmptied: this.handleEmptied,\n onStalled: this.handleStalled,\n onLoadedMetadata: this.handleLoadedMetaData,\n onLoadedData: this.handleLoadedData,\n onTimeUpdate: this.handleTimeUpdate,\n onRateChange: this.handleRateChange,\n onVolumeChange: this.handleVolumeChange,\n tabIndex: \"-1\"\n }, this.renderChildren());\n }\n }, {\n key: \"playbackRate\",\n get: function get() {\n return this.video.playbackRate;\n } // set playback rate\n // speed of video\n ,\n set: function set(rate) {\n this.video.playbackRate = rate;\n }\n }, {\n key: \"muted\",\n get: function get() {\n return this.video.muted;\n },\n set: function set(val) {\n this.video.muted = val;\n }\n }, {\n key: \"volume\",\n get: function get() {\n return this.video.volume;\n },\n set: function set(val) {\n if (val > 1) {\n val = 1;\n }\n\n if (val < 0) {\n val = 0;\n }\n\n this.video.volume = val;\n } // video width\n\n }, {\n key: \"videoWidth\",\n get: function get() {\n return this.video.videoWidth;\n } // video height\n\n }, {\n key: \"videoHeight\",\n get: function get() {\n return this.video.videoHeight;\n }\n }]);\n return Video;\n}(_react.Component);\n\nexports[\"default\"] = Video;\nVideo.propTypes = propTypes;\nVideo.displayName = 'Video';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _MenuButton = _interopRequireDefault(require(\"../menu/MenuButton\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string,\n offMenuText: _propTypes[\"default\"].string,\n showOffMenu: _propTypes[\"default\"].bool,\n kinds: _propTypes[\"default\"].array\n};\nvar defaultProps = {\n offMenuText: 'Off',\n showOffMenu: true,\n kinds: ['captions', 'subtitles'] // `kind`s of TextTrack to look for to associate it with this menu.\n\n};\n\nvar ClosedCaptionButton =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(ClosedCaptionButton, _Component);\n\n function ClosedCaptionButton(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ClosedCaptionButton);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(ClosedCaptionButton).call(this, props, context));\n _this.getTextTrackItems = _this.getTextTrackItems.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.updateState = _this.updateState.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSelectItem = _this.handleSelectItem.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.state = _this.getTextTrackItems();\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ClosedCaptionButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateState();\n }\n }, {\n key: \"getTextTrackItems\",\n value: function getTextTrackItems() {\n var _this$props = this.props,\n kinds = _this$props.kinds,\n player = _this$props.player,\n offMenuText = _this$props.offMenuText,\n showOffMenu = _this$props.showOffMenu;\n var textTracks = player.textTracks,\n activeTextTrack = player.activeTextTrack;\n var textTrackItems = {\n items: [],\n selectedIndex: 0\n };\n var tracks = Array.from(textTracks || []);\n\n if (tracks.length === 0) {\n return textTrackItems;\n }\n\n if (showOffMenu) {\n textTrackItems.items.push({\n label: offMenuText || 'Off',\n value: null\n });\n }\n\n tracks.forEach(function (textTrack) {\n // ignore invalid text track kind\n if (kinds.length && !kinds.includes(textTrack.kind)) {\n return;\n }\n\n textTrackItems.items.push({\n label: textTrack.label,\n value: textTrack.language\n });\n });\n textTrackItems.selectedIndex = textTrackItems.items.findIndex(function (item) {\n return activeTextTrack && activeTextTrack.language === item.value;\n });\n\n if (textTrackItems.selectedIndex === -1) {\n textTrackItems.selectedIndex = 0;\n }\n\n return textTrackItems;\n }\n }, {\n key: \"updateState\",\n value: function updateState() {\n var textTrackItems = this.getTextTrackItems();\n\n if (textTrackItems.selectedIndex !== this.state.selectedIndex || !this.textTrackItemsAreEqual(textTrackItems.items, this.state.items)) {\n this.setState(textTrackItems);\n }\n }\n }, {\n key: \"textTrackItemsAreEqual\",\n value: function textTrackItemsAreEqual(items1, items2) {\n if (items1.length !== items2.length) {\n return false;\n }\n\n for (var i = 0; i < items1.length; i++) {\n if (!items2[i] || items1[i].label !== items2[i].label || items1[i].value !== items2[i].value) {\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"handleSelectItem\",\n value: function handleSelectItem(index) {\n var _this$props2 = this.props,\n player = _this$props2.player,\n actions = _this$props2.actions,\n showOffMenu = _this$props2.showOffMenu;\n var textTracks = player.textTracks; // For the 'subtitles-off' button, the first condition will never match\n // so all subtitles will be turned off\n\n Array.from(textTracks).forEach(function (textTrack, i) {\n // if it shows the `Off` menu, the first item is `Off`\n if (index === (showOffMenu ? i + 1 : i)) {\n textTrack.mode = 'showing';\n actions.activateTextTrack(textTrack);\n } else {\n textTrack.mode = 'hidden';\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$state = this.state,\n items = _this$state.items,\n selectedIndex = _this$state.selectedIndex;\n return _react[\"default\"].createElement(_MenuButton[\"default\"], {\n className: (0, _classnames[\"default\"])('video-react-closed-caption', this.props.className),\n onSelectItem: this.handleSelectItem,\n items: items,\n selectedIndex: selectedIndex\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Closed Caption\"));\n }\n }]);\n return ClosedCaptionButton;\n}(_react.Component);\n\nClosedCaptionButton.propTypes = propTypes;\nClosedCaptionButton.defaultProps = defaultProps;\nClosedCaptionButton.displayName = 'ClosedCaptionButton';\nvar _default = ClosedCaptionButton;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ProgressControl = _interopRequireDefault(require(\"./ProgressControl\"));\n\nvar _PlayToggle = _interopRequireDefault(require(\"./PlayToggle\"));\n\nvar _ForwardControl = _interopRequireDefault(require(\"./ForwardControl\"));\n\nvar _ReplayControl = _interopRequireDefault(require(\"./ReplayControl\"));\n\nvar _FullscreenToggle = _interopRequireDefault(require(\"./FullscreenToggle\"));\n\nvar _RemainingTimeDisplay = _interopRequireDefault(require(\"../time-controls/RemainingTimeDisplay\"));\n\nvar _CurrentTimeDisplay = _interopRequireDefault(require(\"../time-controls/CurrentTimeDisplay\"));\n\nvar _DurationDisplay = _interopRequireDefault(require(\"../time-controls/DurationDisplay\"));\n\nvar _TimeDivider = _interopRequireDefault(require(\"../time-controls/TimeDivider\"));\n\nvar _VolumeMenuButton = _interopRequireDefault(require(\"./VolumeMenuButton\"));\n\nvar _PlaybackRateMenuButton = _interopRequireDefault(require(\"./PlaybackRateMenuButton\"));\n\nvar _utils = require(\"../../utils\");\n\nvar propTypes = {\n children: _propTypes[\"default\"].any,\n autoHide: _propTypes[\"default\"].bool,\n autoHideTime: _propTypes[\"default\"].number,\n // used in Player\n disableDefaultControls: _propTypes[\"default\"].bool,\n disableCompletely: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n autoHide: true,\n disableCompletely: false\n};\n\nvar ControlBar =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(ControlBar, _Component);\n\n function ControlBar(props) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ControlBar);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(ControlBar).call(this, props));\n _this.getDefaultChildren = _this.getDefaultChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getFullChildren = _this.getFullChildren.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ControlBar, [{\n key: \"getDefaultChildren\",\n value: function getDefaultChildren() {\n return [_react[\"default\"].createElement(_PlayToggle[\"default\"], {\n key: \"play-toggle\",\n order: 1\n }), _react[\"default\"].createElement(_VolumeMenuButton[\"default\"], {\n key: \"volume-menu-button\",\n order: 4\n }), _react[\"default\"].createElement(_CurrentTimeDisplay[\"default\"], {\n key: \"current-time-display\",\n order: 5.1\n }), _react[\"default\"].createElement(_TimeDivider[\"default\"], {\n key: \"time-divider\",\n order: 5.2\n }), _react[\"default\"].createElement(_DurationDisplay[\"default\"], {\n key: \"duration-display\",\n order: 5.3\n }), _react[\"default\"].createElement(_ProgressControl[\"default\"], {\n key: \"progress-control\",\n order: 6\n }), _react[\"default\"].createElement(_FullscreenToggle[\"default\"], {\n key: \"fullscreen-toggle\",\n order: 8\n })];\n }\n }, {\n key: \"getFullChildren\",\n value: function getFullChildren() {\n return [_react[\"default\"].createElement(_PlayToggle[\"default\"], {\n key: \"play-toggle\",\n order: 1\n }), _react[\"default\"].createElement(_ReplayControl[\"default\"], {\n key: \"replay-control\",\n order: 2\n }), _react[\"default\"].createElement(_ForwardControl[\"default\"], {\n key: \"forward-control\",\n order: 3\n }), _react[\"default\"].createElement(_VolumeMenuButton[\"default\"], {\n key: \"volume-menu-button\",\n order: 4\n }), _react[\"default\"].createElement(_CurrentTimeDisplay[\"default\"], {\n key: \"current-time-display\",\n order: 5\n }), _react[\"default\"].createElement(_TimeDivider[\"default\"], {\n key: \"time-divider\",\n order: 6\n }), _react[\"default\"].createElement(_DurationDisplay[\"default\"], {\n key: \"duration-display\",\n order: 7\n }), _react[\"default\"].createElement(_ProgressControl[\"default\"], {\n key: \"progress-control\",\n order: 8\n }), _react[\"default\"].createElement(_RemainingTimeDisplay[\"default\"], {\n key: \"remaining-time-display\",\n order: 9\n }), _react[\"default\"].createElement(_PlaybackRateMenuButton[\"default\"], {\n rates: [1, 1.25, 1.5, 2],\n key: \"playback-rate\",\n order: 10\n }), _react[\"default\"].createElement(_FullscreenToggle[\"default\"], {\n key: \"fullscreen-toggle\",\n order: 11\n })];\n }\n }, {\n key: \"getChildren\",\n value: function getChildren() {\n var children = _react[\"default\"].Children.toArray(this.props.children);\n\n var defaultChildren = this.props.disableDefaultControls ? [] : this.getDefaultChildren();\n var _this$props = this.props,\n className = _this$props.className,\n parentProps = (0, _objectWithoutProperties2[\"default\"])(_this$props, [\"className\"]); // remove className\n\n return (0, _utils.mergeAndSortChildren)(defaultChildren, children, parentProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n autoHide = _this$props2.autoHide,\n className = _this$props2.className,\n disableCompletely = _this$props2.disableCompletely;\n var children = this.getChildren();\n return disableCompletely ? null : _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-control-bar', {\n 'video-react-control-bar-auto-hide': autoHide\n }, className)\n }, children);\n }\n }]);\n return ControlBar;\n}(_react.Component);\n\nexports[\"default\"] = ControlBar;\nControlBar.propTypes = propTypes;\nControlBar.defaultProps = defaultProps;\nControlBar.displayName = 'ControlBar';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _ForwardReplayControl = _interopRequireDefault(require(\"./ForwardReplayControl\"));\n\n// Pass mode into parent function\nvar ForwardControl = (0, _ForwardReplayControl[\"default\"])('forward');\nForwardControl.displayName = 'ForwardControl';\nvar _default = ForwardControl;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string,\n seconds: _propTypes[\"default\"].oneOf([5, 10, 30])\n};\nvar defaultProps = {\n seconds: 10\n};\n\nvar _default = function _default(mode) {\n var ForwardReplayControl =\n /*#__PURE__*/\n function (_Component) {\n (0, _inherits2[\"default\"])(ForwardReplayControl, _Component);\n\n function ForwardReplayControl(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ForwardReplayControl);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(ForwardReplayControl).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ForwardReplayControl, [{\n key: \"handleClick\",\n value: function handleClick() {\n var _this$props = this.props,\n actions = _this$props.actions,\n seconds = _this$props.seconds; // Depends mode to implement different actions\n\n if (mode === 'forward') {\n actions.forward(seconds);\n } else {\n actions.replay(seconds);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n seconds = _this$props2.seconds,\n className = _this$props2.className;\n var classNames = ['video-react-control', 'video-react-button', 'video-react-icon'];\n classNames.push(\"video-react-icon-\".concat(mode, \"-\").concat(seconds), \"video-react-\".concat(mode, \"-control\"));\n\n if (className) {\n classNames.push(className);\n }\n\n return _react[\"default\"].createElement(\"button\", {\n ref: function ref(c) {\n _this2.button = c;\n },\n className: classNames.join(' '),\n type: \"button\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"\".concat(mode, \" \").concat(seconds, \" seconds\")));\n }\n }]);\n return ForwardReplayControl;\n }(_react.Component);\n\n ForwardReplayControl.propTypes = propTypes;\n ForwardReplayControl.defaultProps = defaultProps;\n return ForwardReplayControl;\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nvar FullscreenToggle =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(FullscreenToggle, _Component);\n\n function FullscreenToggle(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, FullscreenToggle);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(FullscreenToggle).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(FullscreenToggle, [{\n key: \"handleClick\",\n value: function handleClick() {\n var _this$props = this.props,\n player = _this$props.player,\n actions = _this$props.actions;\n actions.toggleFullscreen(player);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n player = _this$props2.player,\n className = _this$props2.className;\n return _react[\"default\"].createElement(\"button\", {\n className: (0, _classnames[\"default\"])(className, {\n 'video-react-icon-fullscreen-exit': player.isFullscreen,\n 'video-react-icon-fullscreen': !player.isFullscreen\n }, 'video-react-fullscreen-control video-react-control video-react-button video-react-icon'),\n ref: function ref(c) {\n _this2.button = c;\n },\n type: \"button\",\n tabIndex: \"0\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Non-Fullscreen\"));\n }\n }]);\n return FullscreenToggle;\n}(_react.Component);\n\nexports[\"default\"] = FullscreenToggle;\nFullscreenToggle.propTypes = propTypes;\nFullscreenToggle.displayName = 'FullscreenToggle';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = LoadProgressBar;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n duration: _propTypes[\"default\"].number,\n buffered: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n}; // Shows load progress\n\nfunction LoadProgressBar(_ref) {\n var buffered = _ref.buffered,\n duration = _ref.duration,\n className = _ref.className;\n\n if (!buffered || !buffered.length) {\n return null;\n }\n\n var bufferedEnd = buffered.end(buffered.length - 1);\n var style = {};\n\n if (bufferedEnd > duration) {\n bufferedEnd = duration;\n } // get the percent width of a time compared to the total end\n\n\n function percentify(time, end) {\n var percent = time / end || 0; // no NaN\n\n return \"\".concat((percent >= 1 ? 1 : percent) * 100, \"%\");\n } // the width of the progress bar\n\n\n style.width = percentify(bufferedEnd, duration);\n var parts = []; // add child elements to represent the individual buffered time ranges\n\n for (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i); // set the percent based on the width of the progress bar (bufferedEnd)\n\n var part = _react[\"default\"].createElement(\"div\", {\n style: {\n left: percentify(start, bufferedEnd),\n width: percentify(end - start, bufferedEnd)\n },\n key: \"part-\".concat(i)\n });\n\n parts.push(part);\n }\n\n if (parts.length === 0) {\n parts = null;\n }\n\n return _react[\"default\"].createElement(\"div\", {\n style: style,\n className: (0, _classnames[\"default\"])('video-react-load-progress', className)\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Loaded: 0%\"), parts);\n}\n\nLoadProgressBar.propTypes = propTypes;\nLoadProgressBar.displayName = 'LoadProgressBar';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../../utils\");\n\nfunction MouseTimeDisplay(_ref) {\n var duration = _ref.duration,\n mouseTime = _ref.mouseTime,\n className = _ref.className,\n text = _ref.text;\n\n if (!mouseTime.time) {\n return null;\n }\n\n var time = text || (0, _utils.formatTime)(mouseTime.time, duration);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-mouse-display', className),\n style: {\n left: \"\".concat(mouseTime.position, \"px\")\n },\n \"data-current-time\": time\n });\n}\n\nMouseTimeDisplay.propTypes = {\n duration: _propTypes[\"default\"].number,\n mouseTime: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\nMouseTimeDisplay.displayName = 'MouseTimeDisplay';\nvar _default = MouseTimeDisplay;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = PlayProgressBar;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../../utils\");\n\nvar propTypes = {\n currentTime: _propTypes[\"default\"].number,\n duration: _propTypes[\"default\"].number,\n percentage: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string\n}; // Shows play progress\n\nfunction PlayProgressBar(_ref) {\n var currentTime = _ref.currentTime,\n duration = _ref.duration,\n percentage = _ref.percentage,\n className = _ref.className;\n return _react[\"default\"].createElement(\"div\", {\n \"data-current-time\": (0, _utils.formatTime)(currentTime, duration),\n className: (0, _classnames[\"default\"])('video-react-play-progress video-react-slider-bar', className),\n style: {\n width: percentage\n }\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Progress: \".concat(percentage)));\n}\n\nPlayProgressBar.propTypes = propTypes;\nPlayProgressBar.displayName = 'PlayProgressBar';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nvar PlayToggle =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(PlayToggle, _Component);\n\n function PlayToggle(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, PlayToggle);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(PlayToggle).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(PlayToggle, [{\n key: \"handleClick\",\n value: function handleClick() {\n var _this$props = this.props,\n actions = _this$props.actions,\n player = _this$props.player;\n\n if (player.paused) {\n actions.play();\n } else {\n actions.pause();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n player = _this$props2.player,\n className = _this$props2.className;\n var controlText = player.paused ? 'Play' : 'Pause';\n return _react[\"default\"].createElement(\"button\", {\n ref: function ref(c) {\n _this2.button = c;\n },\n className: (0, _classnames[\"default\"])(className, {\n 'video-react-play-control': true,\n 'video-react-control': true,\n 'video-react-button': true,\n 'video-react-paused': player.paused,\n 'video-react-playing': !player.paused\n }),\n type: \"button\",\n tabIndex: \"0\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, controlText));\n }\n }]);\n return PlayToggle;\n}(_react.Component);\n\nexports[\"default\"] = PlayToggle;\nPlayToggle.propTypes = propTypes;\nPlayToggle.displayName = 'PlayToggle';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _PlaybackRateMenuButton = _interopRequireDefault(require(\"./PlaybackRateMenuButton\"));\n\nvar _utils = require(\"../../utils\");\n\nvar PlaybackRate =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(PlaybackRate, _Component);\n\n function PlaybackRate(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, PlaybackRate);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(PlaybackRate).call(this, props, context));\n (0, _utils.deprecatedWarning)('PlaybackRate', 'PlaybackRateMenuButton');\n return _this;\n }\n\n (0, _createClass2[\"default\"])(PlaybackRate, [{\n key: \"render\",\n value: function render() {\n return _react[\"default\"].createElement(_PlaybackRateMenuButton[\"default\"], this.props);\n }\n }]);\n return PlaybackRate;\n}(_react.Component);\n\nexports[\"default\"] = PlaybackRate;\nPlaybackRate.displayName = 'PlaybackRate';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _MenuButton = _interopRequireDefault(require(\"../menu/MenuButton\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n rates: _propTypes[\"default\"].array,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n rates: [2, 1.5, 1.25, 1, 0.5, 0.25]\n};\n\nvar PlaybackRateMenuButton =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(PlaybackRateMenuButton, _Component);\n\n function PlaybackRateMenuButton(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, PlaybackRateMenuButton);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(PlaybackRateMenuButton).call(this, props, context));\n _this.handleSelectItem = _this.handleSelectItem.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(PlaybackRateMenuButton, [{\n key: \"handleSelectItem\",\n value: function handleSelectItem(index) {\n var _this$props = this.props,\n rates = _this$props.rates,\n actions = _this$props.actions;\n\n if (index >= 0 && index < rates.length) {\n actions.changeRate(rates[index]);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n rates = _this$props2.rates,\n player = _this$props2.player;\n var items = rates.map(function (rate) {\n return {\n label: \"\".concat(rate, \"x\"),\n value: rate\n };\n });\n var selectedIndex = rates.indexOf(player.playbackRate) || 0;\n return _react[\"default\"].createElement(_MenuButton[\"default\"], {\n className: (0, _classnames[\"default\"])('video-react-playback-rate', this.props.className),\n onSelectItem: this.handleSelectItem,\n items: items,\n selectedIndex: selectedIndex\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Playback Rate\"), _react[\"default\"].createElement(\"div\", {\n className: \"video-react-playback-rate-value\"\n }, \"\".concat(player.playbackRate.toFixed(2), \"x\")));\n }\n }]);\n return PlaybackRateMenuButton;\n}(_react.Component);\n\nPlaybackRateMenuButton.propTypes = propTypes;\nPlaybackRateMenuButton.defaultProps = defaultProps;\nPlaybackRateMenuButton.displayName = 'PlaybackRateMenuButton';\nvar _default = PlaybackRateMenuButton;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar Dom = _interopRequireWildcard(require(\"../../utils/dom\"));\n\nvar _SeekBar = _interopRequireDefault(require(\"./SeekBar\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nvar ProgressControl =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(ProgressControl, _Component);\n\n function ProgressControl(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, ProgressControl);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(ProgressControl).call(this, props, context));\n _this.state = {\n mouseTime: {\n time: null,\n position: 0\n }\n };\n _this.handleMouseMoveThrottle = _this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(ProgressControl, [{\n key: \"handleMouseMove\",\n value: function handleMouseMove(event) {\n if (!event.pageX) {\n return;\n }\n\n var duration = this.props.player.duration;\n var node = this.seekBar;\n var newTime = Dom.getPointerPosition(node, event).x * duration;\n var position = event.pageX - Dom.findElPosition(node).left;\n this.setState({\n mouseTime: {\n time: newTime,\n position: position\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = this.props.className;\n return _react[\"default\"].createElement(\"div\", {\n onMouseMove: this.handleMouseMoveThrottle,\n className: (0, _classnames[\"default\"])('video-react-progress-control video-react-control', className)\n }, _react[\"default\"].createElement(_SeekBar[\"default\"], (0, _extends2[\"default\"])({\n mouseTime: this.state.mouseTime,\n ref: function ref(c) {\n _this2.seekBar = c;\n }\n }, this.props)));\n }\n }]);\n return ProgressControl;\n}(_react.Component);\n\nexports[\"default\"] = ProgressControl;\nProgressControl.propTypes = propTypes;\nProgressControl.displayName = 'ProgressControl';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _ForwardReplayControl = _interopRequireDefault(require(\"./ForwardReplayControl\"));\n\n// Pass mode into parent function\nvar ReplayControl = (0, _ForwardReplayControl[\"default\"])('replay');\nReplayControl.displayName = 'ReplayControl';\nvar _default = ReplayControl;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _Slider = _interopRequireDefault(require(\"../Slider\"));\n\nvar _PlayProgressBar = _interopRequireDefault(require(\"./PlayProgressBar\"));\n\nvar _LoadProgressBar = _interopRequireDefault(require(\"./LoadProgressBar\"));\n\nvar _MouseTimeDisplay = _interopRequireDefault(require(\"./MouseTimeDisplay\"));\n\nvar _utils = require(\"../../utils\");\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n mouseTime: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nvar SeekBar =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(SeekBar, _Component);\n\n function SeekBar(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, SeekBar);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(SeekBar).call(this, props, context));\n _this.getPercent = _this.getPercent.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getNewTime = _this.getNewTime.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepForward = _this.stepForward.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepBack = _this.stepBack.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseDown = _this.handleMouseDown.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseMove = _this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleMouseUp = _this.handleMouseUp.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(SeekBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {}\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {}\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n\n }, {\n key: \"getPercent\",\n value: function getPercent() {\n var _this$props$player = this.props.player,\n currentTime = _this$props$player.currentTime,\n seekingTime = _this$props$player.seekingTime,\n duration = _this$props$player.duration;\n var time = seekingTime || currentTime;\n var percent = time / duration;\n return percent >= 1 ? 1 : percent;\n }\n }, {\n key: \"getNewTime\",\n value: function getNewTime(event) {\n var duration = this.props.player.duration;\n var distance = this.slider.calculateDistance(event);\n var newTime = distance * duration; // Don't let video end while scrubbing.\n\n return newTime === duration ? newTime - 0.1 : newTime;\n }\n }, {\n key: \"handleMouseDown\",\n value: function handleMouseDown() {}\n }, {\n key: \"handleMouseUp\",\n value: function handleMouseUp(event) {\n var actions = this.props.actions;\n var newTime = this.getNewTime(event); // Set new time (tell video to seek to new time)\n\n actions.seek(newTime);\n actions.handleEndSeeking(newTime);\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove(event) {\n var actions = this.props.actions;\n var newTime = this.getNewTime(event);\n actions.handleSeekingTime(newTime);\n }\n }, {\n key: \"stepForward\",\n value: function stepForward() {\n var actions = this.props.actions;\n actions.forward(5);\n }\n }, {\n key: \"stepBack\",\n value: function stepBack() {\n var actions = this.props.actions;\n actions.replay(5);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n _this$props$player2 = _this$props.player,\n currentTime = _this$props$player2.currentTime,\n seekingTime = _this$props$player2.seekingTime,\n duration = _this$props$player2.duration,\n buffered = _this$props$player2.buffered,\n mouseTime = _this$props.mouseTime;\n var time = seekingTime || currentTime;\n return _react[\"default\"].createElement(_Slider[\"default\"], {\n ref: function ref(input) {\n _this2.slider = input;\n },\n label: \"video progress bar\",\n className: (0, _classnames[\"default\"])('video-react-progress-holder', this.props.className),\n valuenow: (this.getPercent() * 100).toFixed(2),\n valuetext: (0, _utils.formatTime)(time, duration),\n onMouseDown: this.handleMouseDown,\n onMouseMove: this.handleMouseMove,\n onMouseUp: this.handleMouseUp,\n getPercent: this.getPercent,\n stepForward: this.stepForward,\n stepBack: this.stepBack\n }, _react[\"default\"].createElement(_LoadProgressBar[\"default\"], {\n buffered: buffered,\n currentTime: time,\n duration: duration\n }), _react[\"default\"].createElement(_MouseTimeDisplay[\"default\"], {\n duration: duration,\n mouseTime: mouseTime\n }), _react[\"default\"].createElement(_PlayProgressBar[\"default\"], {\n currentTime: time,\n duration: duration\n }));\n }\n }]);\n return SeekBar;\n}(_react.Component);\n\nexports[\"default\"] = SeekBar;\nSeekBar.propTypes = propTypes;\nSeekBar.displayName = 'SeekBar';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _PopupButton = _interopRequireDefault(require(\"../popup/PopupButton\"));\n\nvar _VolumeBar = _interopRequireDefault(require(\"../volume-control/VolumeBar\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n actions: _propTypes[\"default\"].object,\n vertical: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string,\n alwaysShowVolume: _propTypes[\"default\"].bool\n};\nvar defaultProps = {\n vertical: false\n};\n\nvar VolumeMenuButton =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(VolumeMenuButton, _Component);\n\n function VolumeMenuButton(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, VolumeMenuButton);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(VolumeMenuButton).call(this, props, context));\n _this.state = {\n active: false\n };\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(VolumeMenuButton, [{\n key: \"handleClick\",\n value: function handleClick() {\n var _this$props = this.props,\n player = _this$props.player,\n actions = _this$props.actions;\n actions.mute(!player.muted);\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus() {\n this.setState({\n active: true\n });\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur() {\n this.setState({\n active: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n vertical = _this$props2.vertical,\n player = _this$props2.player,\n className = _this$props2.className;\n var inline = !vertical;\n var level = this.volumeLevel;\n return _react[\"default\"].createElement(_PopupButton[\"default\"], {\n className: (0, _classnames[\"default\"])(className, {\n 'video-react-volume-menu-button-vertical': vertical,\n 'video-react-volume-menu-button-horizontal': !vertical,\n 'video-react-vol-muted': player.muted,\n 'video-react-vol-0': level === 0 && !player.muted,\n 'video-react-vol-1': level === 1,\n 'video-react-vol-2': level === 2,\n 'video-react-vol-3': level === 3,\n 'video-react-slider-active': this.props.alwaysShowVolume || this.state.active,\n 'video-react-lock-showing': this.props.alwaysShowVolume || this.state.active\n }, 'video-react-volume-menu-button'),\n onClick: this.handleClick,\n inline: inline\n }, _react[\"default\"].createElement(_VolumeBar[\"default\"], (0, _extends2[\"default\"])({\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, this.props)));\n }\n }, {\n key: \"volumeLevel\",\n get: function get() {\n var _this$props$player = this.props.player,\n volume = _this$props$player.volume,\n muted = _this$props$player.muted;\n var level = 3;\n\n if (volume === 0 || muted) {\n level = 0;\n } else if (volume < 0.33) {\n level = 1;\n } else if (volume < 0.67) {\n level = 2;\n }\n\n return level;\n }\n }]);\n return VolumeMenuButton;\n}(_react.Component);\n\nVolumeMenuButton.propTypes = propTypes;\nVolumeMenuButton.defaultProps = defaultProps;\nVolumeMenuButton.displayName = 'VolumeMenuButton';\nvar _default = VolumeMenuButton;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar propTypes = {\n children: _propTypes[\"default\"].any\n};\n\nvar Menu =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Menu, _Component);\n\n function Menu(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Menu);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Menu).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Menu, [{\n key: \"handleClick\",\n value: function handleClick(event) {\n event.preventDefault(); // event.stopPropagation();\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react[\"default\"].createElement(\"div\", {\n className: \"video-react-menu video-react-lock-showing\",\n role: \"presentation\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"ul\", {\n className: \"video-react-menu-content\"\n }, this.props.children));\n }\n }]);\n return Menu;\n}(_react.Component);\n\nexports[\"default\"] = Menu;\nMenu.propTypes = propTypes;\nMenu.displayName = 'Menu';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _Menu = _interopRequireDefault(require(\"./Menu\"));\n\nvar _MenuItem = _interopRequireDefault(require(\"./MenuItem\"));\n\nvar _ClickableComponent = _interopRequireDefault(require(\"../ClickableComponent\"));\n\nvar propTypes = {\n inline: _propTypes[\"default\"].bool,\n items: _propTypes[\"default\"].array,\n className: _propTypes[\"default\"].string,\n onSelectItem: _propTypes[\"default\"].func,\n children: _propTypes[\"default\"].any,\n selectedIndex: _propTypes[\"default\"].number\n};\n\nvar MenuButton =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(MenuButton, _Component);\n\n function MenuButton(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, MenuButton);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(MenuButton).call(this, props, context));\n _this.state = {\n active: false,\n activateIndex: props.selectedIndex || 0\n };\n _this.commitSelection = _this.commitSelection.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.activateMenuItem = _this.activateMenuItem.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.renderMenu = _this.renderMenu.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleUpArrow = _this.handleUpArrow.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleDownArrow = _this.handleDownArrow.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleEscape = _this.handleEscape.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleReturn = _this.handleReturn.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleTab = _this.handleTab.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleKeyPress = _this.handleKeyPress.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleSelectItem = _this.handleSelectItem.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleIndexChange = _this.handleIndexChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(MenuButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.selectedIndex !== this.props.selectedIndex) {\n this.activateMenuItem(this.props.selectedIndex);\n }\n }\n }, {\n key: \"commitSelection\",\n value: function commitSelection(index) {\n this.setState({\n activateIndex: index\n });\n this.handleIndexChange(index);\n }\n }, {\n key: \"activateMenuItem\",\n value: function activateMenuItem(index) {\n this.setState({\n activateIndex: index\n });\n this.handleIndexChange(index);\n }\n }, {\n key: \"handleIndexChange\",\n value: function handleIndexChange(index) {\n var onSelectItem = this.props.onSelectItem;\n onSelectItem(index);\n }\n }, {\n key: \"handleClick\",\n value: function handleClick() {\n this.setState(function (prevState) {\n return {\n active: !prevState.active\n };\n });\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus() {\n document.addEventListener('keydown', this.handleKeyPress);\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur() {\n this.setState({\n active: false\n });\n document.removeEventListener('keydown', this.handleKeyPress);\n }\n }, {\n key: \"handleUpArrow\",\n value: function handleUpArrow(e) {\n var items = this.props.items;\n\n if (this.state.active) {\n e.preventDefault();\n var newIndex = this.state.activateIndex - 1;\n\n if (newIndex < 0) {\n newIndex = items.length ? items.length - 1 : 0;\n }\n\n this.activateMenuItem(newIndex);\n }\n }\n }, {\n key: \"handleDownArrow\",\n value: function handleDownArrow(e) {\n var items = this.props.items;\n\n if (this.state.active) {\n e.preventDefault();\n var newIndex = this.state.activateIndex + 1;\n\n if (newIndex >= items.length) {\n newIndex = 0;\n }\n\n this.activateMenuItem(newIndex);\n }\n }\n }, {\n key: \"handleTab\",\n value: function handleTab(e) {\n if (this.state.active) {\n e.preventDefault();\n this.commitSelection(this.state.activateIndex);\n }\n }\n }, {\n key: \"handleReturn\",\n value: function handleReturn(e) {\n e.preventDefault();\n\n if (this.state.active) {\n this.commitSelection(this.state.activateIndex);\n } else {\n this.setState({\n active: true\n });\n }\n }\n }, {\n key: \"handleEscape\",\n value: function handleEscape() {\n this.setState({\n active: false,\n activateIndex: 0\n });\n }\n }, {\n key: \"handleKeyPress\",\n value: function handleKeyPress(event) {\n // Escape (27) key\n if (event.which === 27) {\n this.handleEscape(event);\n } else if (event.which === 9) {\n // Tab (9) key\n this.handleTab(event);\n } else if (event.which === 13) {\n // Enter (13) key\n this.handleReturn(event);\n } else if (event.which === 38) {\n // Up (38) key\n this.handleUpArrow(event);\n } else if (event.which === 40) {\n // Down (40) key press\n this.handleDownArrow(event);\n }\n }\n }, {\n key: \"handleSelectItem\",\n value: function handleSelectItem(i) {\n this.commitSelection(i);\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this2 = this;\n\n if (!this.state.active) {\n return null;\n }\n\n var items = this.props.items;\n return _react[\"default\"].createElement(_Menu[\"default\"], null, items.map(function (item, i) {\n return _react[\"default\"].createElement(_MenuItem[\"default\"], {\n item: item,\n index: i,\n onSelectItem: _this2.handleSelectItem,\n activateIndex: _this2.state.activateIndex,\n key: \"item-\".concat(i++)\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n inline = _this$props.inline,\n className = _this$props.className;\n return _react[\"default\"].createElement(_ClickableComponent[\"default\"], {\n className: (0, _classnames[\"default\"])(className, {\n 'video-react-menu-button-inline': !!inline,\n 'video-react-menu-button-popup': !inline,\n 'video-react-menu-button-active': this.state.active\n }, 'video-react-control video-react-button video-react-menu-button'),\n role: \"button\",\n tabIndex: \"0\",\n ref: function ref(c) {\n _this3.menuButton = c;\n },\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n }, this.props.children, this.renderMenu());\n }\n }]);\n return MenuButton;\n}(_react.Component);\n\nexports[\"default\"] = MenuButton;\nMenuButton.propTypes = propTypes;\nMenuButton.displayName = 'MenuButton';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n item: _propTypes[\"default\"].object,\n index: _propTypes[\"default\"].number,\n activateIndex: _propTypes[\"default\"].number,\n onSelectItem: _propTypes[\"default\"].func\n};\n\nvar MenuItem =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(MenuItem, _Component);\n\n function MenuItem(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, MenuItem);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(MenuItem).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(MenuItem, [{\n key: \"handleClick\",\n value: function handleClick() {\n var _this$props = this.props,\n index = _this$props.index,\n onSelectItem = _this$props.onSelectItem;\n onSelectItem(index);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n item = _this$props2.item,\n index = _this$props2.index,\n activateIndex = _this$props2.activateIndex;\n return _react[\"default\"].createElement(\"li\", {\n className: (0, _classnames[\"default\"])({\n 'video-react-menu-item': true,\n 'video-react-selected': index === activateIndex\n }),\n role: \"menuitem\",\n onClick: this.handleClick\n }, item.label, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }));\n }\n }]);\n return MenuItem;\n}(_react.Component);\n\nexports[\"default\"] = MenuItem;\nMenuItem.propTypes = propTypes;\nMenuItem.displayName = 'MenuItem';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n children: _propTypes[\"default\"].any\n};\n\nvar Popup =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(Popup, _Component);\n\n function Popup(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, Popup);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(Popup).call(this, props, context));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(Popup, [{\n key: \"handleClick\",\n value: function handleClick(event) {\n event.preventDefault(); // event.stopPropagation();\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return _react[\"default\"].createElement(\"div\", {\n className: \"video-react-menu\",\n onClick: this.handleClick\n }, _react[\"default\"].createElement(\"div\", {\n className: \"video-react-menu-content\"\n }, children));\n }\n }]);\n return Popup;\n}(_react.Component);\n\nexports[\"default\"] = Popup;\nPopup.propTypes = propTypes;\nPopup.displayName = 'Popup';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = PopupButton;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ClickableComponent = _interopRequireDefault(require(\"../ClickableComponent\"));\n\nvar _Popup = _interopRequireDefault(require(\"./Popup\"));\n\nvar propTypes = {\n inline: _propTypes[\"default\"].bool,\n onClick: _propTypes[\"default\"].func.isRequired,\n onFocus: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n inline: true\n};\n\nfunction PopupButton(props) {\n var inline = props.inline,\n className = props.className;\n var ps = (0, _objectSpread2[\"default\"])({}, props);\n delete ps.children;\n delete ps.inline;\n delete ps.className;\n return _react[\"default\"].createElement(_ClickableComponent[\"default\"], (0, _extends2[\"default\"])({\n className: (0, _classnames[\"default\"])(className, {\n 'video-react-menu-button-inline': !!inline,\n 'video-react-menu-button-popup': !inline\n }, 'video-react-control video-react-button video-react-menu-button')\n }, ps), _react[\"default\"].createElement(_Popup[\"default\"], props));\n}\n\nPopupButton.propTypes = propTypes;\nPopupButton.defaultProps = defaultProps;\nPopupButton.displayName = 'PopupButton';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../../utils\");\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction CurrentTimeDisplay(_ref) {\n var _ref$player = _ref.player,\n currentTime = _ref$player.currentTime,\n duration = _ref$player.duration,\n className = _ref.className;\n var formattedTime = (0, _utils.formatTime)(currentTime, duration);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-current-time video-react-time-control video-react-control', className)\n }, _react[\"default\"].createElement(\"div\", {\n className: \"video-react-current-time-display\",\n \"aria-live\": \"off\"\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Current Time \"), formattedTime));\n}\n\nCurrentTimeDisplay.propTypes = propTypes;\nCurrentTimeDisplay.displayName = 'CurrentTimeDisplay';\nvar _default = CurrentTimeDisplay;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../../utils\");\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction DurationDisplay(_ref) {\n var duration = _ref.player.duration,\n className = _ref.className;\n var formattedTime = (0, _utils.formatTime)(duration);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])(className, 'video-react-duration video-react-time-control video-react-control')\n }, _react[\"default\"].createElement(\"div\", {\n className: \"video-react-duration-display\",\n \"aria-live\": \"off\"\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Duration Time \"), formattedTime));\n}\n\nDurationDisplay.propTypes = propTypes;\nDurationDisplay.displayName = 'DurationDisplay';\nvar _default = DurationDisplay;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _utils = require(\"../../utils\");\n\nvar propTypes = {\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string\n};\n\nfunction RemainingTimeDisplay(_ref) {\n var _ref$player = _ref.player,\n currentTime = _ref$player.currentTime,\n duration = _ref$player.duration,\n className = _ref.className;\n var remainingTime = duration - currentTime;\n var formattedTime = (0, _utils.formatTime)(remainingTime);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-remaining-time video-react-time-control video-react-control', className)\n }, _react[\"default\"].createElement(\"div\", {\n className: \"video-react-remaining-time-display\",\n \"aria-live\": \"off\"\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }, \"Remaining Time \"), \"-\".concat(formattedTime)));\n}\n\nRemainingTimeDisplay.propTypes = propTypes;\nRemainingTimeDisplay.displayName = 'RemainingTimeDisplay';\nvar _default = RemainingTimeDisplay;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = TimeDivider;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n separator: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string\n};\n\nfunction TimeDivider(_ref) {\n var separator = _ref.separator,\n className = _ref.className;\n var separatorText = separator || '/';\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])('video-react-time-control video-react-time-divider', className),\n dir: \"ltr\"\n }, _react[\"default\"].createElement(\"div\", null, _react[\"default\"].createElement(\"span\", null, separatorText)));\n}\n\nTimeDivider.propTypes = propTypes;\nTimeDivider.displayName = 'TimeDivider';","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _Slider = _interopRequireDefault(require(\"../Slider\"));\n\nvar _VolumeLevel = _interopRequireDefault(require(\"./VolumeLevel\"));\n\nvar propTypes = {\n actions: _propTypes[\"default\"].object,\n player: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string,\n onFocus: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func\n};\n\nvar VolumeBar =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2[\"default\"])(VolumeBar, _Component);\n\n function VolumeBar(props, context) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, VolumeBar);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(VolumeBar).call(this, props, context));\n _this.state = {\n percentage: '0%'\n };\n _this.handleMouseMove = _this.handleMouseMove.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handlePercentageChange = _this.handlePercentageChange.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.checkMuted = _this.checkMuted.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.getPercent = _this.getPercent.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepForward = _this.stepForward.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.stepBack = _this.stepBack.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2[\"default\"])(_this));\n _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2[\"default\"])(_this));\n return _this;\n }\n\n (0, _createClass2[\"default\"])(VolumeBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {}\n }, {\n key: \"getPercent\",\n value: function getPercent() {\n var player = this.props.player;\n\n if (player.muted) {\n return 0;\n }\n\n return player.volume;\n }\n }, {\n key: \"checkMuted\",\n value: function checkMuted() {\n var _this$props = this.props,\n player = _this$props.player,\n actions = _this$props.actions;\n\n if (player.muted) {\n actions.mute(false);\n }\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove(event) {\n var actions = this.props.actions;\n this.checkMuted();\n var distance = this.slider.calculateDistance(event);\n actions.changeVolume(distance);\n }\n }, {\n key: \"stepForward\",\n value: function stepForward() {\n var _this$props2 = this.props,\n player = _this$props2.player,\n actions = _this$props2.actions;\n this.checkMuted();\n actions.changeVolume(player.volume + 0.1);\n }\n }, {\n key: \"stepBack\",\n value: function stepBack() {\n var _this$props3 = this.props,\n player = _this$props3.player,\n actions = _this$props3.actions;\n this.checkMuted();\n actions.changeVolume(player.volume - 0.1);\n }\n }, {\n key: \"handleFocus\",\n value: function handleFocus(e) {\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n }, {\n key: \"handleBlur\",\n value: function handleBlur(e) {\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n }\n }, {\n key: \"handlePercentageChange\",\n value: function handlePercentageChange(percentage) {\n if (percentage !== this.state.percentage) {\n this.setState({\n percentage: percentage\n });\n }\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event) {\n event.stopPropagation();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props4 = this.props,\n player = _this$props4.player,\n className = _this$props4.className;\n var volume = (player.volume * 100).toFixed(2);\n return _react[\"default\"].createElement(_Slider[\"default\"], (0, _extends2[\"default\"])({\n ref: function ref(c) {\n _this2.slider = c;\n },\n label: \"volume level\",\n valuenow: volume,\n valuetext: \"\".concat(volume, \"%\"),\n onMouseMove: this.handleMouseMove,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n sliderActive: this.handleFocus,\n sliderInactive: this.handleBlur,\n getPercent: this.getPercent,\n onPercentageChange: this.handlePercentageChange,\n stepForward: this.stepForward,\n stepBack: this.stepBack\n }, this.props, {\n className: (0, _classnames[\"default\"])(className, 'video-react-volume-bar video-react-slider-bar')\n }), _react[\"default\"].createElement(_VolumeLevel[\"default\"], this.props));\n }\n }]);\n return VolumeBar;\n}(_react.Component);\n\nVolumeBar.propTypes = propTypes;\nVolumeBar.displayName = 'VolumeBar';\nvar _default = VolumeBar;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar propTypes = {\n percentage: _propTypes[\"default\"].string,\n vertical: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string\n};\nvar defaultProps = {\n percentage: '100%',\n vertical: false\n};\n\nfunction VolumeLevel(_ref) {\n var percentage = _ref.percentage,\n vertical = _ref.vertical,\n className = _ref.className;\n var style = {};\n\n if (vertical) {\n style.height = percentage;\n } else {\n style.width = percentage;\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _classnames[\"default\"])(className, 'video-react-volume-level'),\n style: style\n }, _react[\"default\"].createElement(\"span\", {\n className: \"video-react-control-text\"\n }));\n}\n\nVolumeLevel.propTypes = propTypes;\nVolumeLevel.defaultProps = defaultProps;\nVolumeLevel.displayName = 'VolumeLevel';\nvar _default = VolumeLevel;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Player\", {\n enumerable: true,\n get: function get() {\n return _Player[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Video\", {\n enumerable: true,\n get: function get() {\n return _Video[\"default\"];\n }\n});\nObject.defineProperty(exports, \"BigPlayButton\", {\n enumerable: true,\n get: function get() {\n return _BigPlayButton[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LoadingSpinner\", {\n enumerable: true,\n get: function get() {\n return _LoadingSpinner[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PosterImage\", {\n enumerable: true,\n get: function get() {\n return _PosterImage[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Slider\", {\n enumerable: true,\n get: function get() {\n return _Slider[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Bezel\", {\n enumerable: true,\n get: function get() {\n return _Bezel[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Shortcut\", {\n enumerable: true,\n get: function get() {\n return _Shortcut[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ControlBar\", {\n enumerable: true,\n get: function get() {\n return _ControlBar[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PlayToggle\", {\n enumerable: true,\n get: function get() {\n return _PlayToggle[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ForwardControl\", {\n enumerable: true,\n get: function get() {\n return _ForwardControl[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ReplayControl\", {\n enumerable: true,\n get: function get() {\n return _ReplayControl[\"default\"];\n }\n});\nObject.defineProperty(exports, \"FullscreenToggle\", {\n enumerable: true,\n get: function get() {\n return _FullscreenToggle[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ProgressControl\", {\n enumerable: true,\n get: function get() {\n return _ProgressControl[\"default\"];\n }\n});\nObject.defineProperty(exports, \"SeekBar\", {\n enumerable: true,\n get: function get() {\n return _SeekBar[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PlayProgressBar\", {\n enumerable: true,\n get: function get() {\n return _PlayProgressBar[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LoadProgressBar\", {\n enumerable: true,\n get: function get() {\n return _LoadProgressBar[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MouseTimeDisplay\", {\n enumerable: true,\n get: function get() {\n return _MouseTimeDisplay[\"default\"];\n }\n});\nObject.defineProperty(exports, \"VolumeMenuButton\", {\n enumerable: true,\n get: function get() {\n return _VolumeMenuButton[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PlaybackRateMenuButton\", {\n enumerable: true,\n get: function get() {\n return _PlaybackRateMenuButton[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PlaybackRate\", {\n enumerable: true,\n get: function get() {\n return _PlaybackRate[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ClosedCaptionButton\", {\n enumerable: true,\n get: function get() {\n return _ClosedCaptionButton[\"default\"];\n }\n});\nObject.defineProperty(exports, \"RemainingTimeDisplay\", {\n enumerable: true,\n get: function get() {\n return _RemainingTimeDisplay[\"default\"];\n }\n});\nObject.defineProperty(exports, \"CurrentTimeDisplay\", {\n enumerable: true,\n get: function get() {\n return _CurrentTimeDisplay[\"default\"];\n }\n});\nObject.defineProperty(exports, \"DurationDisplay\", {\n enumerable: true,\n get: function get() {\n return _DurationDisplay[\"default\"];\n }\n});\nObject.defineProperty(exports, \"TimeDivider\", {\n enumerable: true,\n get: function get() {\n return _TimeDivider[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MenuButton\", {\n enumerable: true,\n get: function get() {\n return _MenuButton[\"default\"];\n }\n});\nObject.defineProperty(exports, \"playerReducer\", {\n enumerable: true,\n get: function get() {\n return _reducers.playerReducer;\n }\n});\nObject.defineProperty(exports, \"operationReducer\", {\n enumerable: true,\n get: function get() {\n return _reducers.operationReducer;\n }\n});\nexports.videoActions = exports.playerActions = void 0;\n\nvar _Player = _interopRequireDefault(require(\"./components/Player\"));\n\nvar _Video = _interopRequireDefault(require(\"./components/Video\"));\n\nvar _BigPlayButton = _interopRequireDefault(require(\"./components/BigPlayButton\"));\n\nvar _LoadingSpinner = _interopRequireDefault(require(\"./components/LoadingSpinner\"));\n\nvar _PosterImage = _interopRequireDefault(require(\"./components/PosterImage\"));\n\nvar _Slider = _interopRequireDefault(require(\"./components/Slider\"));\n\nvar _Bezel = _interopRequireDefault(require(\"./components/Bezel\"));\n\nvar _Shortcut = _interopRequireDefault(require(\"./components/Shortcut\"));\n\nvar _ControlBar = _interopRequireDefault(require(\"./components/control-bar/ControlBar\"));\n\nvar _PlayToggle = _interopRequireDefault(require(\"./components/control-bar/PlayToggle\"));\n\nvar _ForwardControl = _interopRequireDefault(require(\"./components/control-bar/ForwardControl\"));\n\nvar _ReplayControl = _interopRequireDefault(require(\"./components/control-bar/ReplayControl\"));\n\nvar _FullscreenToggle = _interopRequireDefault(require(\"./components/control-bar/FullscreenToggle\"));\n\nvar _ProgressControl = _interopRequireDefault(require(\"./components/control-bar/ProgressControl\"));\n\nvar _SeekBar = _interopRequireDefault(require(\"./components/control-bar/SeekBar\"));\n\nvar _PlayProgressBar = _interopRequireDefault(require(\"./components/control-bar/PlayProgressBar\"));\n\nvar _LoadProgressBar = _interopRequireDefault(require(\"./components/control-bar/LoadProgressBar\"));\n\nvar _MouseTimeDisplay = _interopRequireDefault(require(\"./components/control-bar/MouseTimeDisplay\"));\n\nvar _VolumeMenuButton = _interopRequireDefault(require(\"./components/control-bar/VolumeMenuButton\"));\n\nvar _PlaybackRateMenuButton = _interopRequireDefault(require(\"./components/control-bar/PlaybackRateMenuButton\"));\n\nvar _PlaybackRate = _interopRequireDefault(require(\"./components/control-bar/PlaybackRate\"));\n\nvar _ClosedCaptionButton = _interopRequireDefault(require(\"./components/control-bar/ClosedCaptionButton\"));\n\nvar _RemainingTimeDisplay = _interopRequireDefault(require(\"./components/time-controls/RemainingTimeDisplay\"));\n\nvar _CurrentTimeDisplay = _interopRequireDefault(require(\"./components/time-controls/CurrentTimeDisplay\"));\n\nvar _DurationDisplay = _interopRequireDefault(require(\"./components/time-controls/DurationDisplay\"));\n\nvar _TimeDivider = _interopRequireDefault(require(\"./components/time-controls/TimeDivider\"));\n\nvar _MenuButton = _interopRequireDefault(require(\"./components/menu/MenuButton\"));\n\nvar playerActions = _interopRequireWildcard(require(\"./actions/player\"));\n\nexports.playerActions = playerActions;\n\nvar videoActions = _interopRequireWildcard(require(\"./actions/video\"));\n\nexports.videoActions = videoActions;\n\nvar _reducers = require(\"./reducers\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\nexports.operationReducer = exports.playerReducer = void 0;\n\nvar _player = _interopRequireDefault(require(\"./player\"));\n\nvar _operation = _interopRequireDefault(require(\"./operation\"));\n\nfunction _default() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n return {\n player: (0, _player[\"default\"])(state.player, action),\n operation: (0, _operation[\"default\"])(state.operation, action)\n };\n}\n\nvar playerReducer = _player[\"default\"];\nexports.playerReducer = playerReducer;\nvar operationReducer = _operation[\"default\"];\nexports.operationReducer = operationReducer;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = operation;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _player = require(\"../actions/player\");\n\nvar initialState = {\n count: 0,\n operation: {\n action: '',\n source: ''\n }\n};\n\nfunction operation() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _player.OPERATE:\n return (0, _objectSpread2[\"default\"])({}, state, {\n count: state.count + 1,\n operation: (0, _objectSpread2[\"default\"])({}, state.operation, action.operation)\n });\n\n default:\n return state;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = player;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _video = require(\"../actions/video\");\n\nvar _player = require(\"../actions/player\");\n\nvar initialState = {\n currentSrc: null,\n duration: 0,\n currentTime: 0,\n seekingTime: 0,\n buffered: null,\n waiting: false,\n seeking: false,\n paused: true,\n autoPaused: false,\n ended: false,\n playbackRate: 1,\n muted: false,\n volume: 1,\n readyState: 0,\n networkState: 0,\n videoWidth: 0,\n videoHeight: 0,\n hasStarted: false,\n userActivity: true,\n isActive: false,\n isFullscreen: false,\n activeTextTrack: null\n};\n\nfunction player() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _player.USER_ACTIVATE:\n return (0, _objectSpread2[\"default\"])({}, state, {\n userActivity: action.activity\n });\n\n case _player.PLAYER_ACTIVATE:\n return (0, _objectSpread2[\"default\"])({}, state, {\n isActive: action.activity\n });\n\n case _player.FULLSCREEN_CHANGE:\n return (0, _objectSpread2[\"default\"])({}, state, {\n isFullscreen: !!action.isFullscreen\n });\n\n case _video.SEEKING_TIME:\n return (0, _objectSpread2[\"default\"])({}, state, {\n seekingTime: action.time\n });\n\n case _video.END_SEEKING:\n return (0, _objectSpread2[\"default\"])({}, state, {\n seekingTime: 0\n });\n\n case _video.LOAD_START:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n hasStarted: false,\n ended: false\n });\n\n case _video.CAN_PLAY:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n waiting: false\n });\n\n case _video.WAITING:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n waiting: true\n });\n\n case _video.CAN_PLAY_THROUGH:\n case _video.PLAYING:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n waiting: false\n });\n\n case _video.PLAY:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n ended: false,\n paused: false,\n autoPaused: false,\n waiting: false,\n hasStarted: true\n });\n\n case _video.PAUSE:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n paused: true\n });\n\n case _video.END:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n ended: true\n });\n\n case _video.SEEKING:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n seeking: true\n });\n\n case _video.SEEKED:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n seeking: false\n });\n\n case _video.ERROR:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps, {\n error: 'UNKNOWN ERROR',\n ended: true\n });\n\n case _video.DURATION_CHANGE:\n case _video.TIME_UPDATE:\n case _video.VOLUME_CHANGE:\n case _video.PROGRESS_CHANGE:\n case _video.RATE_CHANGE:\n case _video.SUSPEND:\n case _video.ABORT:\n case _video.EMPTIED:\n case _video.STALLED:\n case _video.LOADED_META_DATA:\n case _video.LOADED_DATA:\n case _video.RESIZE:\n return (0, _objectSpread2[\"default\"])({}, state, action.videoProps);\n\n case _video.ACTIVATE_TEXT_TRACK:\n return (0, _objectSpread2[\"default\"])({}, state, {\n activeTextTrack: action.textTrack\n });\n\n default:\n return state;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = void 0;\nvar USER_AGENT = typeof window !== 'undefined' && window.navigator ? window.navigator.userAgent : ''; // const webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\n// const appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT); // The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nexports.IS_IPAD = IS_IPAD;\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nexports.IS_IPHONE = IS_IPHONE;\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\nexports.IS_IPOD = IS_IPOD;\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\nexports.IS_IOS = IS_IOS;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findElPosition = findElPosition;\nexports.getPointerPosition = getPointerPosition;\nexports.blurNode = blurNode;\nexports.focusNode = focusNode;\nexports.hasClass = hasClass;\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @function findElPosition\n * @param {ReactNodeRef} el React Node ref from which to get offset\n * @return {Object}\n */\nfunction findElPosition(el) {\n var box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var _document = document,\n body = _document.body,\n docEl = _document.documentElement;\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = window.pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = window.pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop; // Android sometimes returns slightly off decimal values, so need to round\n\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n/**\n * Get pointer position in a React Node ref\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @function getPointerPosition\n * @param {ReactNodeRef} el React Node ref on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object} This object will have x and y coordinates corresponding to the mouse position\n */\n\n\nfunction getPointerPosition(el, event) {\n var position = {};\n var box = findElPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n var boxY = box.top;\n var boxX = box.left;\n var evtPageY = event.pageY;\n var evtPageX = event.pageX;\n\n if (event.changedTouches) {\n evtPageX = event.changedTouches[0].pageX;\n evtPageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - evtPageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (evtPageX - boxX) / boxW));\n return position;\n} // blur an element\n\n\nfunction blurNode(reactNode) {\n if (reactNode && reactNode.blur) {\n reactNode.blur();\n }\n} // focus an element\n\n\nfunction focusNode(reactNode) {\n if (reactNode && reactNode.focus) {\n reactNode.focus();\n }\n} // check if an element has a class name\n\n\nfunction hasClass(elm, cls) {\n var classes = elm.className.split(' ');\n\n for (var i = 0; i < classes.length; i++) {\n if (classes[i].toLowerCase() === cls.toLowerCase()) {\n return true;\n }\n }\n\n return false;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar Fullscreen =\n/*#__PURE__*/\nfunction () {\n function Fullscreen() {\n (0, _classCallCheck2[\"default\"])(this, Fullscreen);\n }\n\n (0, _createClass2[\"default\"])(Fullscreen, [{\n key: \"request\",\n value: function request(elm) {\n if (elm.requestFullscreen) {\n elm.requestFullscreen();\n } else if (elm.webkitRequestFullscreen) {\n elm.webkitRequestFullscreen();\n } else if (elm.mozRequestFullScreen) {\n elm.mozRequestFullScreen();\n } else if (elm.msRequestFullscreen) {\n elm.msRequestFullscreen();\n }\n }\n }, {\n key: \"exit\",\n value: function exit() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(handler) {\n document.addEventListener('fullscreenchange', handler);\n document.addEventListener('webkitfullscreenchange', handler);\n document.addEventListener('mozfullscreenchange', handler);\n document.addEventListener('MSFullscreenChange', handler);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(handler) {\n document.removeEventListener('fullscreenchange', handler);\n document.removeEventListener('webkitfullscreenchange', handler);\n document.removeEventListener('mozfullscreenchange', handler);\n document.removeEventListener('MSFullscreenChange', handler);\n }\n }, {\n key: \"isFullscreen\",\n get: function get() {\n return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n }\n }, {\n key: \"enabled\",\n get: function get() {\n return document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled;\n }\n }]);\n return Fullscreen;\n}();\n\nvar _default = new Fullscreen();\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatTime = formatTime;\nexports.isVideoChild = isVideoChild;\nexports.mergeAndSortChildren = mergeAndSortChildren;\nexports.deprecatedWarning = deprecatedWarning;\nexports.throttle = throttle;\nexports.mediaProperties = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\n// NaN is the only value in javascript which is not equal to itself.\n// eslint-disable-next-line no-self-compare\nvar isNaN = Number.isNaN || function (value) {\n return value !== value;\n};\n/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\n\n\nfunction formatTime() {\n var seconds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var guide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : seconds;\n var s = Math.floor(seconds % 60);\n var m = Math.floor(seconds / 60 % 60);\n var h = Math.floor(seconds / 3600);\n var gm = Math.floor(guide / 60 % 60);\n var gh = Math.floor(guide / 3600); // handle invalid times\n\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = '-';\n m = '-';\n s = '-';\n } // Check if we need to show hours\n\n\n h = h > 0 || gh > 0 ? \"\".concat(h, \":\") : ''; // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n\n m = \"\".concat((h || gm >= 10) && m < 10 ? \"0\".concat(m) : m, \":\"); // Check if leading zero is need for seconds\n\n s = s < 10 ? \"0\".concat(s) : s;\n return h + m + s;\n} // Check if the element belongs to a video element\n// only accept , ,\n// \n// elements\n\n\nfunction isVideoChild(c) {\n if (c.props && c.props.isVideoChild) {\n return true;\n }\n\n return c.type === 'source' || c.type === 'track';\n}\n\nvar find = function find(elements, func) {\n return elements.filter(func)[0];\n}; // check if two components are the same type\n\n\nvar isTypeEqual = function isTypeEqual(component1, component2) {\n var type1 = component1.type;\n var type2 = component2.type;\n\n if (typeof type1 === 'string' || typeof type2 === 'string') {\n return type1 === type2;\n }\n\n if (typeof type1 === 'function' && typeof type2 === 'function') {\n return type1.displayName === type2.displayName;\n }\n\n return false;\n}; // merge default children\n// sort them by `order` property\n// filter them by `disabled` property\n\n\nfunction mergeAndSortChildren(defaultChildren, _children, _parentProps) {\n var defaultOrder = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n\n var children = _react[\"default\"].Children.toArray(_children);\n\n var order = _parentProps.order,\n parentProps = (0, _objectWithoutProperties2[\"default\"])(_parentProps, [\"order\"]); // ignore order from parent\n\n return children.filter(function (e) {\n return !e.props.disabled;\n }) // filter the disabled components\n .concat(defaultChildren.filter(function (c) {\n return !find(children, function (component) {\n return isTypeEqual(component, c);\n });\n })).map(function (element) {\n var defaultComponent = find(defaultChildren, function (c) {\n return isTypeEqual(c, element);\n });\n var defaultProps = defaultComponent ? defaultComponent.props : {};\n var props = (0, _objectSpread2[\"default\"])({}, parentProps, defaultProps, element.props);\n\n var e = _react[\"default\"].cloneElement(element, props, element.props.children);\n\n return e;\n }).sort(function (a, b) {\n return (a.props.order || defaultOrder) - (b.props.order || defaultOrder);\n });\n}\n/**\n * Temporary utility for generating the warnings\n */\n\n\nfunction deprecatedWarning(oldMethodCall, newMethodCall) {\n // eslint-disable-next-line no-console\n console.warn(\"WARNING: \".concat(oldMethodCall, \" will be deprecated soon! Please use \").concat(newMethodCall, \" instead.\"));\n}\n\nfunction throttle(callback, limit) {\n var _arguments = arguments;\n var wait = false;\n return function () {\n if (!wait) {\n // eslint-disable-next-line prefer-rest-params\n callback.apply(void 0, (0, _toConsumableArray2[\"default\"])(_arguments));\n wait = true;\n setTimeout(function () {\n wait = false;\n }, limit);\n }\n };\n}\n\nvar mediaProperties = ['error', 'src', 'srcObject', 'currentSrc', 'crossOrigin', 'networkState', 'preload', 'buffered', 'readyState', 'seeking', 'currentTime', 'duration', 'paused', 'defaultPlaybackRate', 'playbackRate', 'played', 'seekable', 'ended', 'autoplay', 'loop', 'mediaGroup', 'controller', 'controls', 'volume', 'muted', 'defaultMuted', 'audioTracks', 'videoTracks', 'textTracks', 'width', 'height', 'videoWidth', 'videoHeight', 'poster'];\nexports.mediaProperties = mediaProperties;"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","arrayLikeToArray","isArray","self","ReferenceError","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","obj","value","_extends","assign","arguments","source","hasOwnProperty","call","apply","this","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","create","constructor","_typeof","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","iter","Symbol","iterator","from","ownKeys","keys","getOwnPropertySymbols","push","filter","sym","forEach","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","assertThisInitialized","_setPrototypeOf","p","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","minLen","n","toString","slice","name","test","_interopRequireDefault","_createSvgIcon","_jsxRuntime","default","jsx","d","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","document","querySelector","content","cspNonce","m","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","setData","$","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","input","CustomEvent","fire","preventDefault","window","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","result","defaultPrevented","data","dispatchEvent","stopEverything","e","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","type","toUpperCase","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","createElement","setAttribute","head","appendChild","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","checked","map","encodeURIComponent","join","formElements","form","el","allowAction","handleConfirm","confirm","message","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","start","_rails_loaded","setTimeout","definitionsFromContext","context","identifier","logicalName","identifierForContextKey","controllerConstructor","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","file","acceptedFiles","acceptedFilesArray","split","fileName","mimeType","toLowerCase","baseMimeType","some","validType","trim","charAt","endsWith","hasOwn","classNames","classes","arg","argType","inner","t","r","Promise","a","u","next","c","throw","then","label","sent","trys","ops","return","pop","console","warn","log","bind","s","f","C","clipboardData","g","navigator","userAgent","x","textContent","attachShadow","mode","innerText","D","execCommand","E","clipboard","writeText","T","y","getSelection","createRange","selectNodeContents","removeAllRanges","addRange","ClipboardEvent","baseGet","baseSet","castPath","object","paths","predicate","index","path","assignValue","isIndex","isObject","toKey","customizer","lastIndex","nested","newValue","objValue","undefined","baseIndexOf","strSymbols","chrSymbols","baseIteratee","isArrayLike","findIndexFunc","collection","fromIndex","iterable","iteratee","baseSlice","isIterateeCall","toInteger","nativeCeil","ceil","nativeMax","max","array","size","guard","resIndex","find","createFind","isNumber","lowerCase","createCompounder","word","negate","pickBy","root","reTrimStart","nativeParseInt","parseInt","string","radix","arrayMap","basePickBy","getAllKeysIn","prop","baseToString","baseTrim","castSlice","charsEndIndex","charsStartIndex","stringToArray","chars","end","baseUniq","l","b","q","z","B","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","for","F","displayName","$$typeof","_context","render","_render","_payload","_init","la","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ma","I","_threadCount","_currentValue2","J","Uint16Array","K","oa","pa","qa","ra","sa","M","h","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","N","va","wa","xlinkHref","xa","O","exec","charCodeAt","substring","ya","ta","isNaN","ua","Aa","is","P","Q","R","S","U","V","W","Ba","memoizedState","queue","Ca","Da","Ea","Fa","Ga","dispatch","delete","last","Ha","Ia","Map","Ja","X","Ka","readContext","threadID","useContext","useMemo","useReducer","useRef","current","useState","useLayoutEffect","useCallback","useImperativeHandle","useEffect","useDebugValue","useDeferredValue","useTransition","useOpaqueIdentifier","identifierPrefix","uniqueID","useMutableSource","_source","La","Ma","Na","area","base","br","col","embed","hr","img","keygen","track","wbr","Oa","menuitem","Y","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","Pa","Qa","Ra","Z","Children","Sa","ReactCurrentDispatcher","Ta","listing","pre","textarea","Ua","Va","Wa","Ya","Za","children","dangerouslySetInnerHTML","suppressContentEditableWarning","suppressHydrationWarning","$a","ab","isReactComponent","contextType","contextTypes","na","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","getDerivedStateFromProps","k","state","updater","UNSAFE_componentWillMount","componentWillMount","v","H","getChildContext","childContextTypes","A","isValidElement","child","bb","domNamespace","childIndex","footer","stack","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","destroy","clearProviders","pushProvider","popProvider","read","L","G","fallbackFrame","renderDOM","defaultChecked","defaultValue","Xa","w","cb","__html","renderToNodeStream","renderToStaticMarkup","Infinity","renderToStaticNodeStream","renderToString","version","COMMON_MIME_TYPES","toFileWithPath","lastIndexOf","ext","withMimeType","webkitRelativePath","FILES_TO_IGNORE","getInputFiles","fromList","files","getFsHandleFiles","handles","_a","all","getFile","getDataTransferFiles","dt","items","item","kind","toFilePromises","noIgnoredFiles","flatten","webkitGetAsEntry","fromDataTransferItem","entry","isDirectory","fromDirEntry","reduce","acc","getAsFile","reject","fwp","resolve","fromEntry","fromFileEntry","reader","createReader","entries","readEntries","_this","batch","err_1","err","fullPath","enumerableOnly","symbols","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","messageSuffix","concat","code","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isDefined","allFilesAccepted","_ref","multiple","maxFiles","every","accepted","sizeMatch","isPropagationStopped","cancelBubble","isEvtWithFiles","dataTransfer","types","onDocumentDragOver","isIe","isEdge","isIeOrEdge","composeEventHandlers","_len","fns","_key","_len2","_key2","fn","canUseFileSystemAccessAPI","filePickerOptionsTypes","description","_excluded","_excluded2","_excluded3","_excluded4","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_objectWithoutProperties","_objectWithoutPropertiesLoose","Dropzone","forwardRef","_useDropzone","useDropzone","Fragment","defaultProps","getFilesFromEvent","isChangeEvt","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","useFsAccessApi","propTypes","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","draggedFiles","fileRejections","_defaultProps$options","onFileDialogOpenCb","noop","onFileDialogCancelCb","rootRef","inputRef","_useReducer","reducer","_useReducer2","onWindowFocus","dragTargetsRef","onDocumentDrop","contains","onDragEnterCb","persist","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","splice","setFiles","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","customErrors","errors","onDropCb","openFileDialog","opts","showOpenFilePicker","catch","finally","onKeyDownCb","isEqualNode","keyCode","onFocusCb","onBlurCb","onClickCb","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2","_ref2$refKey","refKey","role","onKeyDown","onFocus","onBlur","onClick","rest","tabIndex","onInputElementClick","getInputProps","_ref3","_ref3$refKey","onChange","inputProps","autoComplete","fileCount","Facebook","_ref$color","color","_ref$size","xmlns","width","height","viewBox","fill","stroke","strokeLinecap","strokeLinejoin","File","points","Share2","cx","cy","x1","y1","x2","y2","Twitter","Type","Upload","Video","rx","ry","authenticityToken","HTMLMetaElement","authenticityHeaders","otherHeaders","__importDefault","mod","isRenderFunction_1","registeredComponents","register","components","component","renderFunction","isRenderer","__createBinding","k2","__setModuleDefault","__importStar","ClientStartup","handleError_1","ComponentRegistry_1","StoreRegistry_1","serverRenderReactComponent_1","buildConsoleReplay_1","createReactOutput_1","Authenticity_1","context_1","reactHydrate_1","reactRender_1","ctx","DEFAULT_OPTIONS","traceTurbolinks","turbo","ReactOnRails","registerStore","stores","getStore","throwIfMissing","setOptions","newOptions","stringify","reactOnRailsPageLoaded","getStoreGenerator","setStore","store","clearHydratedStores","domNodeId","hydrate","componentObj","reactElement","getElementById","getComponent","serverRenderReactComponent","handleError","buildConsoleReplay","storeGenerators","resetOptions","clientStartup","wrapInScriptTags","scriptId","scriptBody","registeredStoreGenerators","hydratedStores","storeKeys","clear","consoleReplay","RenderUtils_1","scriptSanitizedVal_1","history","msg","stringifiedList","val","String","level","__spreadArray","to","il","j","react_dom_1","isServerRenderResult_1","REACT_ON_RAILS_STORE_ATTRIBUTE","findContext","debugTurbolinks","turboInstalled","reactOnRailsHtmlElements","getElementsByClassName","initializeStore","railsContext","storeGenerator","domNodeIdForEl","trace","domNode","delegateToRenderer","shouldHydrate","hydrateRoot","reactElementOrRouterResult","isServerRenderHash","parseRailsContext","els","forEachStore","forEachReactOnRailsComponentInitialize","unmount","unmountComponentAtNode","info","reactOnRailsPageUnloaded","renderInit","Turbolinks","supported","controller","isWindow","__REACT_ON_RAILS_EVENT_HANDLERS_RAN_ONCE__","react_1","serverSide","renderFunctionResult","isPromise","reactComponent","server_1","jsCode","lastLine","shouldBeRenderFunctionError","handleRenderFunctionIssue","lineNumber","testValue","renderedHtml","redirectLocation","routeError","supportsReactCreateRoot_1","createRoot","__awaiter","thisArg","_arguments","generator","fulfilled","step","rejected","__generator","_","verb","op","renderingReturnsPromises","throwJsErrors","renderResult","hasErrors","renderingError","reactRenderingResult_1","redirectPath","pathname","search","processServerRenderHash","processReactElement","consoleReplayScript","addRenderingErrors","resultObject","renderError","promiseResult","e_1","_b","reactMajorVersion","SelectComponent","_class","_temp","compareOption","inputValue","accessors","candidate","optionValue","getOptionValue","optionLabel","getOptionLabel","builtins","formatCreateLabel","isValidNewOption","selectValue","selectOptions","getNewOptionData","__isNew__","allowCreateWhileLoading","createOptionPosition","SelectCreatable","_Component","Creatable","_super","select","actionMeta","_this$props","isMulti","onCreateOption","newOption","valueArray","newOptionData","newActionMeta","focus","blur","_this2","isLoading","Component","EmailShareButton","subject","separator","openShareDialogOnClick","FacebookShareButton","quote","hashtag","windowWidth","windowHeight","TwitterShareButton","title","via","hashtags","_c","related","extendStatics","__extends","__","__assign","__rest","getBoxPositionOnWindowCenter","left","outerWidth","screenX","screenLeft","top","outerHeight","screenY","screenTop","getBoxPositionOnScreenCenter","screen","windowOpen","onClose","configRest","config","toolbar","directories","menubar","scrollbars","resizable","centerscreen","chrome","shareDialog","interval_1","setInterval","closed","clearInterval","ShareButton","openShareDialog","onShareWindowClose","windowPosition","handleClick","beforeOnClick","networkLink","returnVal","className","disabledStyle","forwardedRef","networkName","resetButtonStyle","newClassName","newStyle","backgroundColor","border","padding","font","cursor","optsMap","CreatedButton","passedProps","AssertionError","assert","objectToGetParams","Point","pressure","time","Date","now","distanceTo","sqrt","pow","equals","other","velocityFrom","Bezier","static","widths","c2","calculateControlPoints","c3","c1","s1","s2","s3","dx1","dy1","dx2","dy2","m1","m2","l1","l2","cm","tx","ty","startPoint","control2","control1","endPoint","startWidth","endWidth","px","py","point","xdiff","ydiff","SignaturePad","_et","EventTarget","listener","canvas","super","_drawingStroke","_isEmpty","_lastPoints","_data","_lastVelocity","_lastWidth","_handleMouseDown","buttons","_strokeBegin","_handleMouseMove","_strokeMoveUpdate","_handleMouseUp","_strokeEnd","_handleTouchStart","targetTouches","touch","changedTouches","_handleTouchMove","_handleTouchEnd","_handlePointerStart","_handlePointerMove","_handlePointerEnd","velocityFilterWeight","minWidth","maxWidth","throttle","minDistance","dotSize","penColor","compositeOperation","canvasContextOptions","wait","storedContext","storedArgs","previous","timeout","later","remaining","clearTimeout","_strokeUpdate","_ctx","getContext","on","fillStyle","clearRect","fillRect","_reset","_getPointGroupOptions","fromDataURL","dataUrl","image","Image","ratio","devicePixelRatio","xOffset","yOffset","onload","drawImage","onerror","crossOrigin","src","toDataURL","encoderOptions","btoa","toSVG","touchAction","msTouchAction","userSelect","isIOS","PointerEvent","_handlePointerEvents","_handleMouseEvents","_handleTouchEvents","off","ownerDocument","isEmpty","fromData","pointGroups","_fromData","_drawCurve","_drawDot","toData","group","pointGroupOptions","newPointGroup","clientX","clientY","force","_createPoint","lastPointGroup","lastPoints","lastPoint","isLastPointTooClose","curve","_addPoint","globalCompositeOperation","rect","getBoundingClientRect","getTime","unshift","_calculateCurveWidths","fromPoints","shift","velocity","newWidth","_strokeWidth","_drawCurveSegment","moveTo","arc","PI","widthDelta","drawSteps","beginPath","tt","ttt","uu","uuu","min","closePath","drawCurve","drawDot","basicPoint","includeBackgroundColor","maxX","maxY","svg","createElementNS","attr","toFixed","circle","outerHTML","debounce","delay","_ref$atBegin","atBegin","timeoutID","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","wrapper","arguments_","elapsed","cancel","_ref2$upcomingOnly","upcomingOnly","SuppressedError","canvasRef","canvasWidth","canvasHeight","callResizeHandler","debounceInterval","handleResize","componentDidMount","signaturePad","scaleCanvas","componentWillUnmount","offsetWidth","offsetHeight","redrawOnResize","setState","scale","canvasProps","asyncGeneratorStep","gen","_next","_throw","runtime_1","runtime","undefined$1","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","reverse","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","BackdropContainerStyle","position","background","flexDirection","alignItems","justifyContent","Backdrop","currentTarget","externalOpen","URL","iconList","facebook","twitter","whatsapp","reddit","telegram","linkedin","ti","mail","copy","decodeURIComponent","vk","okru","PortalComponent","createPortal","CloseStyle","fontSize","CloseButton","closeText","ShareHeader","paddingBottom","Header","SocialIconStyle","borderRadius","Icon","_iconList$name","_iconList$name$viewBo","IconsContainer","borderBottomLeftRadius","borderBottomRightRadius","IconsLisStyle","gridTemplateColumns","gridGap","SocialIcons","sites","defaultSites","RWebShare","_ref$sites","_useDisclosure","isOpenDefault","_useState","isOpen","setIsOpen","onOpen","onToggle","useDisclosure","shareData","handleOnClick","_asyncToGenerator","_callee","share","t0","cloneElement","RecordRTC","mediaStream","RecordRTCConfiguration","initRecorder","initCallback","Recorder","GetRecorderType","mediaRecorder","disableLogs","stopRecording","resumeRecording","_callback","warningLog","__blob","blob","bytesToSize","createObjectURL","autoWriteToDisk","getDataURL","dataURL","parameter","DiskStorage","Store","readFile","_blob","postMessage","FileReaderSync","readAsDataURL","_mediaRecorder","Worker","mozGetUserMedia","FileReader","webWorker","_function","Blob","worker","revokeObjectURL","processInWebWorker","onmessage","handleRecordingDuration","counter","recordingDuration","onRecordingStopped","onStateChanged","WARNING","returnObject","startRecording","config2","clearRecordedData","pauseRecording","pause","resume","setRecordingDuration","getBlob","toURL","getInternalRecorder","save","invokeSaveAsDialog","getFromDisk","setAdvertisementArray","arrayOfWebPImages","advertisement","duration","bufferSize","sampleRate","buffer","getState","disableLogsCache","Storage","AudioContextConstructor","close","recorderType","audio","video","WhammyRecorder","CanvasRecorder","WebAssemblyRecorder","GifRecorder","StereoAudioRecorder","MediaStreamRecorder","getTracks","MediaRecorder","bitsPerSecond","recorder","isChrome","isOpera","ReadableStream","isMediaRecorderCompatible","isTypeSupported","MultiStreamRecorder","isSafari","MRecordRTC","addStream","_mediaStream","mediaType","gif","audioRecorder","numberOfAudioChannels","timeSlice","onTimeStamp","newStream","videoTrack","isFirefox","MediaStream","addTrack","videoRecorder","frameInterval","workerPath","webAssemblyPath","frameRate","bitrate","isSingleRecorder","gifRecorder","quality","blobURL","output","callback00","webkitURL","_audioDataURL","_videoDataURL","writeToDisk","Fetch","_type","audioDataURL","videoDataURL","gifDataURL","audioBlob","videoBlob","gifBlob","that","getUserMedia","documentElement","captureStream","mozCaptureStream","play","HTMLVideoElement","hash","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","lastTime","currTime","timeToCall","id","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msCancelAnimationFrame","AudioContext","webkitAudioContext","mozAudioContext","webkitGetUserMedia","msSaveBlob","msSaveOrOpenBlob","opera","isElectron","bytes","toPrecision","fileExtension","splitted","fileFullName","round","random","hyperlink","download","MouseEvent","view","process","versions","electron","stream","setSrcObject","srcObject","mozSrcObject","webkitMediaStream","getSeekableBlob","inputBlob","EBML","Reader","decoder","Decoder","tools","fileReader","decode","refinedMetadataBuf","makeMetadataSeekable","metadatas","cues","metadataSize","newBlob","readAsArrayBuffer","appVersion","verOffset","ix","nAgt","fullVersion","parseFloat","majorVersion","arrayOfBlobs","updateTimeStamp","timestamps","getMimeType","secondObject","clearRecordedDataCB","getArrayOfBlobs","allStates","recorderHints","canRecordMimeType","ondataavailable","recordingCallback","getNativeBlob","onstart","onpause","onresume","onstop","looper","manuallyStopped","timeslice","getAllStates","checkForInactiveTracks","active","ended","isMediaStreamActive","jsAudioNode","leftchannel","rightchannel","recording","recordingLength","desiredSampRate","mergeLeftRightBuffers","mergeAudioBuffers","interleaved","leftBuffers","rightBuffers","internalInterleavedLength","interpolateArray","newSampleRate","oldSampleRate","fitCount","newData","springFactor","Number","tmp","before","after","atPoint","linearInterpolate","mergeBuffers","channelBuffer","rLength","Float64Array","offset","lng","writeUTFBytes","setUint8","leftChannel","rightChannel","inputIndex","interleave","interleavedLength","ArrayBuffer","DataView","setUint32","setUint16","setInt16","noWorker","workerURL","terminate","resetVariables","isAudioProcessStarted","isPaused","byteLength","audioInput","createMediaStreamSource","legalBufferValues","createJavaScriptNode","createScriptProcessor","connect","intervalsBasedBuffers","right","onaudioprocess","disconnect","onAudioProcessStarted","inputBuffer","getChannelData","chLeft","Float32Array","chRight","createMediaStreamDestination","destination","htmlElement","html2canvas","isCanvasSupportsStreamCapturing","globalCanvas","mediaStreamRecorder","isRecording","_isChrome","webkitRTCPeerConnection","chromeVersion","matchArray","useWhammyRecorder","HTMLCanvasElement","CanvasRenderingContext2D","canvasMediaStream","webkitCaptureStream","mdStream","whammy","frames","drawCanvasFrame","getWebPImages","nodeName","framesLength","frame","idx","framesRemaining","onEncodingCallback","webp","compile","isPausedRecording","newCanvas","grabMouse","showMousePointer","onrendered","Whammy","drawFrames","paused","isStopDrawing","dropBlackFrames","_frames","_framesToCheck","_pixTolerance","_frameTolerance","localCanvas","context2d","resultFrames","checkUntilNotBlack","endCheckFrame","sampleColor","maxColorDifference","pixTolerance","frameTolerance","doNotCheckNext","functionToLoop","loop","matchPixCount","endPixCheck","maxPixCount","finishImage","imageData","getImageData","pix","currentColor","cloneNode","onloadedmetadata","muted","WhammyVideo","whammyInWebWorker","getClusterData","clusterTimecode","clusterCounter","clusterFrames","block","flags","keyframe","invisible","lacing","discardable","trackNum","timecode","fromCharCode","makeSimpleBlock","numToBuffer","num","parts","Uint8Array","bitsToBuffer","bits","substr","generateEBML","ebml","zeroes","sizeToString","padded","getStrLength","unpadded","parseRIFF","chunks","webm","checkFrames","frameNumber","clusterDuration","cluster","riff","VP8","RIFF","WEBP","frameStart","parseWebP","atob","add","init","indexedDB","db","dbName","request","onError","onsuccess","setVersion","createObjectStore","putInDB","onupgradeneeded","dataBase","dataStoreName","transaction","getFromStore","portionName","objectStore","put","GIFEncoder","isHTMLObject","isLoadedMetaData","gifEncoder","setRepeat","setDelay","setQuality","onGifRecordingStarted","lastAnimationFrame","drawVideoFrame","clearedRecordedData","lastFrameTime","onGifPreview","addFrame","bin","autoplay","playsInline","MultiStreamsMixer","arrayOfMediaStreams","elementClass","videos","isStopDrawingFrames","useGainNode","drawVideosToCanvas","videosLength","fullcanvas","onRender","getVideo","volume","resetVideoStreams","streams","startDrawingFrames","appendStreams","audioSource","audioContext","audioDestination","releaseStreams","gainNode","audioSources","getMixedStream","mixedVideoStream","capturedStream","videoStream","getMixedVideoStream","mixedAudioStream","createGain","gain","audioTracksLength","getMixedAudioStream","mixer","tracks","previewStream","addStreams","getMixer","finished","cameraStream","cvs","first","onplaying","frameTimeout","cameraTimer","onVideoProcessStarted","_controlledReadableStream","enqueue","fetch","arrayBuffer","timebaseDen","realtime","pipeTo","WritableStream","write","arrayOfBuffers","RecordRTCPromisesHandler","recordRTC","EventListener","eventTarget","eventName","unorderedBindings","Set","bindingConnected","binding","bindingDisconnected","handleEvent","extendedEvent","stopImmediatePropagation_1","immediatePropagationStopped","extendEvent","bindings","sort","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","started","eventListeners","eventListener","listeners","fetchEventListenerForBinding","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","tagName","defaultEventNames","getDefaultEventNameForElement","methodName","forToken","descriptorString","eventNameSuffix","Binding","willBeInvokedByEvent","invokeWithEvent","scope","containsElement","ElementObserver","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","removeElement","addElement","mutations_1","mutation","processMutation","processAttributeChange","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","del","prune","Multimap","valuesByKey","hasKey","hasValue","getValuesForKey","getKeysForValue","TokenListObserver","IndexedMultimap","keysByValue","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","findIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","removeAttribute","char","attributeValueContainsToken","TargetSet","targetName","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","targetDescriptor","targetAttribute","Scope","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","modules","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","Application","router","load","definitions","unload","identifiers","getControllerForElementAndIdentifier","defineTargetProperties","ancestors","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","capitalize","SwipeDetect","threshold","enable","recordTouchStartValues","detectSwipeDirection","disable","startX","pageX","startY","pageY","startTime","distX","distY","absX","abs","absY","elements_selector","container","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","restore_on_error","classList","remove","RegExp","llTempImage","_observer","unobserve","loadingCount","toLoadCount","IMG","IFRAME","VIDEO","OBJECT","nn","tn","llEvLisnrs","en","an","rn","cn","ln","backgroundImage","un","sn","dn","gn","HTMLImageElement","vn","isIntersecting","intersectionRatio","bn","mn","pn","hn","En","_settings","IntersectionObserver","rootMargin","_onlineHandler","update","loadAll","restoreAll","resetStatus","lazyLoadOptions","_interopRequireWildcard","_objectSpread2","_classCallCheck2","_createClass2","_redux","_reducers","playerActions","videoActions","Manager","createStore","rootElement","manager","actions","boundActions","actionCreator","prevState","subscribe","prevStateCopy","subscribeToStateChange","operation","player","handleFullscreenChange","isFullscreen","FULLSCREEN_CHANGE","activate","activity","PLAYER_ACTIVATE","userActivate","USER_ACTIVATE","OPERATE","togglePlay","seek","forward","seconds","replay","changeRate","rate","playbackRate","changeVolume","mute","toggleFullscreen","_fullscreen","enabled","exit","handleLoadStart","videoProps","LOAD_START","handleCanPlay","CAN_PLAY","handleWaiting","WAITING","handleCanPlayThrough","CAN_PLAY_THROUGH","handlePlaying","PLAYING","handlePlay","PLAY","handlePause","PAUSE","handleEnd","END","handleSeeking","SEEKING","handleSeeked","SEEKED","handleDurationChange","DURATION_CHANGE","handleTimeUpdate","TIME_UPDATE","handleVolumeChange","VOLUME_CHANGE","handleProgressChange","PROGRESS_CHANGE","handleRateChange","RATE_CHANGE","handleSuspend","SUSPEND","handleAbort","ABORT","handleEmptied","EMPTIED","handleStalled","STALLED","handleLoadedMetaData","LOADED_META_DATA","handleLoadedData","LOADED_DATA","RESIZE","ERROR","handleSeekingTime","SEEKING_TIME","handleEndSeeking","END_SEEKING","activateTextTrack","textTrack","ACTIVATE_TEXT_TRACK","_possibleConstructorReturn2","_getPrototypeOf2","_assertThisInitialized2","_inherits2","_propTypes","_react","_classnames","Bezel","timer","subscribeToOperationStateChange","handleStateChange","hidden","count","BigPlayButton","hasStarted","currentSrc","_extends2","func","isRequired","ClickableComponent","handleFocus","handleBlur","handleKeypress","which","Tag","LoadingSpinner","_defineProperty2","_objectWithoutProperties2","_Manager","_BigPlayButton","_LoadingSpinner","_PosterImage","_Video","_Bezel","_Shortcut","_ControlBar","browser","_dom","_utils","any","oneOfType","number","fluid","bool","aspectRatio","videoId","autoPlay","poster","preload","oneOf","onLoadStart","onWaiting","onCanPlay","onCanPlayThrough","onPlaying","onEnded","onSeeking","onSeeked","onPlay","onPause","onProgress","onDurationChange","onSuspend","onAbort","onEmptied","onStalled","onLoadedMetadata","onLoadedData","onTimeUpdate","onRateChange","onVolumeChange","Player","controlsHideTimer","getActions","subscribeToPlayerStateChange","getStyle","getChildren","handleMouseMove","handleMouseDown","startControlsTimer","handleFullScreenChange","handleKeyDown","originalChildren","propsWithoutChildren","isVideoChild","defaultChildren","getDefaultChildren","mergeAndSortChildren","styleVal","propsAspectRatio","propsHeight","propsWidth","ratioParts","videoWidth","videoHeight","ratioMultiplier","paddingTop","setWidthOrHeight","_this$video","addTextTrack","_this$video2","canPlayType","_this3","controlBarActiveTime","autoHideTime","focusNode","forceUpdate","_this4","waiting","seeking","userActivity","IS_IOS","onTouchStart","onMouseDown","onTouchMove","onMouseMove","PosterImage","_default","_toConsumableArray2","clickable","dblclickable","shortcuts","Shortcut","defaultShortcuts","mergeShortcuts","handleKeyPress","handleDoubleClick","prevProps","getShortcutKey","_ref$keyCode","_ref$ctrl","ctrl","_ref$shift","_ref$alt","alt","shortcut","mergedShortcuts","gradeShortcut","score","isActive","activeElement","hasClass","shiftKey","altKey","_this$props2","canBeClicked","_this$props3","Dom","stepForward","stepBack","sliderActive","sliderInactive","onMouseUp","getPercent","vertical","valuenow","valuetext","Slider","handleMouseUp","calculateDistance","getProgress","renderChildren","progress","slider","getPointerPosition","percentage","onResize","getProperties","handleEnded","handleProgress","handleTextTrackChange","textTracks","onaddtrack","onremovetrack","mediaProperties","activeTextTrack","promise","currentTime","_this$props4","_this$props5","_this$props6","_this$props7","_this$props8","_this$props9","_this$props10","_this$props11","_this$props12","_this$props13","_this$props14","_this$props15","_this$props16","_this$props17","_this$props18","_this$props19","_this$props20","_this$props21","_this$props22","_this$props23","_this$props24","_this$props25","cprops","preOnError","_this$props26","_MenuButton","offMenuText","showOffMenu","kinds","ClosedCaptionButton","getTextTrackItems","updateState","handleSelectItem","textTrackItems","selectedIndex","includes","language","textTrackItemsAreEqual","items1","items2","_this$state","onSelectItem","_ProgressControl","_PlayToggle","_ForwardControl","_ReplayControl","_FullscreenToggle","_RemainingTimeDisplay","_CurrentTimeDisplay","_DurationDisplay","_TimeDivider","_VolumeMenuButton","_PlaybackRateMenuButton","autoHide","disableDefaultControls","disableCompletely","ControlBar","getFullChildren","rates","parentProps","ForwardControl","ForwardReplayControl","FullscreenToggle","LoadProgressBar","buffered","bufferedEnd","percentify","percent","part","MouseTimeDisplay","mouseTime","formatTime","PlayProgressBar","PlayToggle","controlText","PlaybackRate","deprecatedWarning","PlaybackRateMenuButton","_SeekBar","ProgressControl","handleMouseMoveThrottle","seekBar","newTime","findElPosition","ReplayControl","_Slider","_PlayProgressBar","_LoadProgressBar","_MouseTimeDisplay","SeekBar","getNewTime","_this$props$player","seekingTime","_this$props$player2","_PopupButton","_VolumeBar","alwaysShowVolume","VolumeMenuButton","inline","volumeLevel","Menu","_Menu","_MenuItem","_ClickableComponent","MenuButton","activateIndex","commitSelection","activateMenuItem","renderMenu","handleUpArrow","handleDownArrow","handleEscape","handleReturn","handleTab","handleIndexChange","newIndex","menuButton","MenuItem","Popup","PopupButton","_Popup","ps","CurrentTimeDisplay","_ref$player","formattedTime","DurationDisplay","RemainingTimeDisplay","remainingTime","TimeDivider","separatorText","dir","_VolumeLevel","VolumeBar","handlePercentageChange","checkMuted","distance","onPercentageChange","VolumeLevel","_Player","_PlaybackRate","_ClosedCaptionButton","_player","_operation","operationReducer","playerReducer","_video","autoPaused","networkState","IS_IPOD","IS_IPHONE","IS_IPAD","USER_AGENT","box","_document","docEl","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","boxW","boxH","boxY","boxX","evtPageY","evtPageX","blurNode","reactNode","elm","cls","Fullscreen","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","guide","gm","gh","_children","_parentProps","defaultOrder","isTypeEqual","defaultComponent","oldMethodCall","newMethodCall","limit","component1","component2","type1","type2"],"sourceRoot":""}