@latest-thinking/lt-player 1.0.3-c → 1.0.4-c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/lt-player-main.css +5 -0
- package/dist/css/lt-player-main.css.map +1 -0
- package/dist/js/lt-player-main.js +3 -0
- package/dist/js/lt-player-main.js.map +1 -0
- package/package.json +5 -5
- package/src/assets/sass/abstracts/_mixins.scss +7 -0
- package/src/assets/sass/core/_fonts.scss +5 -5
- package/src/assets/sass/sections/_share.scss +3 -4
- package/src/assets/sass/sections/_subtitles.scss +6 -0
- package/src/assets/sass/sections/controllers/_botom.scss +14 -4
- package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +60 -15
- package/src/assets/sass/sections/controllers/_top.scss +18 -1
- package/src/components/LTPlayerManager.ts +2 -6
- package/src/components/LTPlayerType.ts +9 -3
- package/src/components/controls/LTPlayerControlsEvents.ts +25 -164
- package/src/components/events/LTPlayerCommon.ts +4 -1
- package/src/components/events/LTPlayerDesktop.ts +20 -5
- package/src/components/events/LTPlayerMobile.ts +21 -11
- package/src/components/poster/LTPlayerPoster.ts +4 -13
- package/src/components/share/LTPlayerShare.ts +40 -0
- package/src/components/share/LTPlayerShareEvents.ts +103 -0
- package/src/global/controllers/LTPlayerController.ts +3 -1
- package/src/global/types/ModuleTypes.d.ts +6 -0
- package/src/index.ts +1 -3
- package/src/services/IconsService.ts +2 -1
- package/src/views/controls.handlebars +33 -12
- package/src/views/poster.handlebars +5 -7
- package/dist/css/lt-player-app.css +0 -5
- package/dist/css/lt-player-app.css.map +0 -1
- package/dist/js/lt-player-app.js +0 -3
- package/dist/js/lt-player-app.js.map +0 -1
- package/webpack.common.js +0 -49
- package/webpack.config.dev.js +0 -50
- package/webpack.config.prod.js +0 -43
- /package/dist/js/{lt-player-app.js.LICENSE.txt → lt-player-main.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/lt-player-main.js","mappings":"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","sources":["webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-pointer/dist/jsonPointer.js","webpack://@latest-thinking/lt-player/./node_modules/deepmerge/dist/cjs.js","webpack://@latest-thinking/lt-player/./node_modules/ebnf/dist/Grammars/W3CEBNF.js","webpack://@latest-thinking/lt-player/./node_modules/ebnf/dist/Parser.js","webpack://@latest-thinking/lt-player/./node_modules/ebnf/dist/TokenError.js","webpack://@latest-thinking/lt-player/./node_modules/fast-deep-equal/index.js","webpack://@latest-thinking/lt-player/./node_modules/hammerjs/hammer.js","webpack://@latest-thinking/lt-player/./node_modules/plyr/dist/plyr.min.js","webpack://@latest-thinking/lt-player/./node_modules/rangetouch/dist/rangetouch.js","webpack://@latest-thinking/lt-player/./node_modules/valid-url/index.js","webpack://@latest-thinking/lt-player/./src/assets/icons/ sync nonrecursive ^\\.\\/.*$","webpack://@latest-thinking/lt-player/webpack/bootstrap","webpack://@latest-thinking/lt-player/webpack/runtime/create fake namespace object","webpack://@latest-thinking/lt-player/webpack/runtime/compat get default export","webpack://@latest-thinking/lt-player/webpack/runtime/define property getters","webpack://@latest-thinking/lt-player/webpack/runtime/global","webpack://@latest-thinking/lt-player/webpack/runtime/hasOwnProperty shorthand","webpack://@latest-thinking/lt-player/webpack/runtime/make namespace object","webpack://@latest-thinking/lt-player/webpack/runtime/node module decorator","webpack://@latest-thinking/lt-player/./src/components/controls/LTPlayerChapters.ts","webpack://@latest-thinking/lt-player/./src/components/controls/settings/LTPlayerCommonSettingsControllers.ts","webpack://@latest-thinking/lt-player/./src/components/controls/settings/LTPlayerMobileSettingsControllers.ts","webpack://@latest-thinking/lt-player/./src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts","webpack://@latest-thinking/lt-player/./src/components/controls/LTPlayerSettingsControlsManager.ts","webpack://@latest-thinking/lt-player/./src/components/controls/LTPlayerControlsEvents.ts","webpack://@latest-thinking/lt-player/./src/components/controls/LTPlayerControls.ts","webpack://@latest-thinking/lt-player/./node_modules/mustache/mustache.mjs","webpack://@latest-thinking/lt-player/./src/views/controls.handlebars","webpack://@latest-thinking/lt-player/./src/views/additionalInfo.handlebars","webpack://@latest-thinking/lt-player/./src/services/TemplateService.ts","webpack://@latest-thinking/lt-player/./src/views/onloadPoster.handlebars","webpack://@latest-thinking/lt-player/./src/views/share.handlebars","webpack://@latest-thinking/lt-player/./src/views/poster.handlebars","webpack://@latest-thinking/lt-player/./src/views/settings.handlebars","webpack://@latest-thinking/lt-player/./src/views/template.handlebars","webpack://@latest-thinking/lt-player/./src/views/background.handlebars","webpack://@latest-thinking/lt-player/./src/services/IconsService.ts","webpack://@latest-thinking/lt-player/./src/components/addInfo/LTPLayerAddInfoResizeManager.ts","webpack://@latest-thinking/lt-player/./src/services/LTPlayerRotateDeviceService.ts","webpack://@latest-thinking/lt-player/./src/services/ResizeService.ts","webpack://@latest-thinking/lt-player/./src/components/poster/LTPlayerPosterPreload.ts","webpack://@latest-thinking/lt-player/./src/components/poster/LTPlayerPoster.ts","webpack://@latest-thinking/lt-player/./src/services/LoaderService.ts","webpack://@latest-thinking/lt-player/./src/components/poster/LTPlayerPosterPreloadEvents.ts","webpack://@latest-thinking/lt-player/./src/components/LTPlayerDevMethode.ts","webpack://@latest-thinking/lt-player/./src/components/poster/LTPlayerPosterEvents.ts","webpack://@latest-thinking/lt-player/./src/components/poster/LTPlayerPosterManager.ts","webpack://@latest-thinking/lt-player/./src/components/share/LTPlayerShareEvents.ts","webpack://@latest-thinking/lt-player/./src/components/share/LTPlayerShare.ts","webpack://@latest-thinking/lt-player/./src/global/controllers/LTPlayerController.ts","webpack://@latest-thinking/lt-player/./src/components/controls/LTPlayerMini.ts","webpack://@latest-thinking/lt-player/./src/services/Helper.ts","webpack://@latest-thinking/lt-player/./src/components/LTPlayerConfig.ts","webpack://@latest-thinking/lt-player/./src/components/events/LTPlayerCommon.ts","webpack://@latest-thinking/lt-player/./src/components/events/LTPlayerDesktop.ts","webpack://@latest-thinking/lt-player/./src/components/events/LTPlayerMobile.ts","webpack://@latest-thinking/lt-player/./src/components/LTPlayerEventsManager.ts","webpack://@latest-thinking/lt-player/./src/components/events/LTPlayer.ts","webpack://@latest-thinking/lt-player/./src/components/LTPlayerType.ts","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/config/strings.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/__.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/render.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/createCustomError.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/getTypeOf.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/types.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/filter.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/flattenArray.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/config/settings.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/resolveOneOf.strict.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/copy.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/merge.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/resolveAllOf.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/resolveOneOf.fuzzy.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/getSchema.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/parser/jsonQueryGrammar.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/parser/index.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/interpreter/nodes.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/interpreter/keys.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/interpreter/index.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/get.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/split.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/lib/set.js","webpack://@latest-thinking/lt-player/./node_modules/@sagold/json-query/dist/module/index.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/schema/types.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/schema/getTypeId.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/eachSchema.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/schema/getTypeDefs.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/compile/joinScope.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/compile/splitRef.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/compile/getRef.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/draft06/compile/index.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/validation/errors.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/validation/format.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/getTemplate.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/isEmpty.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/deepCompare.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/utils/punycode.ucs2decode.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/validation/keyword.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/draft06/validation/keyword.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/createSchemaOf.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/step.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/draft07/index.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/draft06/validation/type.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/addRemoteSchema.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/each.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/getChildSchemaSelection.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/isValid.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/resolveAnyOf.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/resolveRef.strict.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/validate.js","webpack://@latest-thinking/lt-player/./node_modules/json-schema-library/dist/module/lib/draft/index.js","webpack://@latest-thinking/lt-player/./src/services/ValidatorService.ts","webpack://@latest-thinking/lt-player/./src/components/addInfo/LTPlayerAdditionalInfoEvents.ts","webpack://@latest-thinking/lt-player/./src/components/addInfo/LTPlayerAddInfoManager.ts","webpack://@latest-thinking/lt-player/./src/components/LTPlayerSetup.ts","webpack://@latest-thinking/lt-player/./src/components/LTPlayerManager.ts","webpack://@latest-thinking/lt-player/./src/index.ts"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"jsonPointer\",[],t):\"object\"==typeof exports?exports.jsonPointer=t():e.jsonPointer=t()}(\"undefined\"!=typeof self?self:this,(()=>(()=>{\"use strict\";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};function n(e){return\"#\"===e||\"\"===e||Array.isArray(e)&&0===e.length||!1}e.r(t),e.d(t,{default:()=>x,get:()=>c,isRoot:()=>n,join:()=>_,remove:()=>v,removeUndefinedItems:()=>j,set:()=>y,split:()=>s});const r=/~1/g,o=/~0/g,i=/\\/+/g,l=/(^[#/]*|\\/+$)/g;function u(e){return e.replace(r,\"/\").replace(o,\"~\")}function f(e){return u(decodeURIComponent(e))}function s(e){if(null==e||\"string\"!=typeof e||n(e))return Array.isArray(e)?e:[];const t=e.indexOf(\"#\")>=0?f:u,r=(e=(e=e.replace(i,\"/\")).replace(l,\"\")).split(\"/\");for(let e=0,n=r.length;e<n;e+=1)r[e]=t(r[e]);return r}function c(e,t,r){if(null==t||null==e)return r;if(n(t))return e;const o=p(e,s(t));return void 0===o?r:o}function p(e,t){const n=t.shift();if(void 0!==e)return void 0!==n?p(e[n],t):e}const a=/^\\[.*\\]$/,d=/^\\[(.+)\\]$/;function g(e,t){return\"__proto__\"===e||\"constructor\"==e&&t.length>0&&\"prototype\"==t[0]}function y(e,t,n){if(null==t)return e;const r=s(t);if(0===r.length)return e;null==e&&(e=a.test(r[0])?[]:{});let o,i,l=e;for(;r.length>1;)o=r.shift(),i=a.test(r[0]),g(o,r)||(l=m(l,o,i));return o=r.pop(),h(l,o,n),e}function h(e,t,n){let r;const o=t.match(d);\"[]\"===t&&Array.isArray(e)?e.push(n):o?(r=o.pop(),e[r]=n):e[t]=n}function m(e,t,n){if(null!=e[t])return e[t];const r=n?[]:{};return h(e,t,r),r}function j(e){let t=0,n=0;for(;t+n<e.length;)void 0===e[t+n]&&(n+=1),e[t]=e[t+n],t+=1;return e.length=e.length-n,e}function v(e,t,n){const r=s(t),o=r.pop(),i=c(e,r);return i&&delete i[o],Array.isArray(i)&&!0!==n&&j(i),e}const b=/\\/+/g,A=/~/g,P=/\\//g;function O(e,t){if(0===e.length)return t?\"#\":\"\";for(let n=0,r=e.length;n<r;n+=1)e[n]=e[n].replace(A,\"~0\").replace(P,\"~1\"),t&&(e[n]=encodeURIComponent(e[n]));return((t?\"#/\":\"/\")+e.join(\"/\")).replace(b,\"/\")}function _(e,...t){const n=[];if(Array.isArray(e))return O(e,!0===arguments[1]);const r=arguments[arguments.length-1],o=\"boolean\"==typeof r?r:e&&\"#\"===e[0];for(let e=0,t=arguments.length;e<t;e+=1)n.push.apply(n,s(arguments[e]));const i=[];for(let e=0,t=n.length;e<t;e+=1)if(\"..\"===n[e]){if(0===i.length)return o?\"#\":\"\";i.pop()}else i.push(n[e]);return O(i,o)}const x={get:c,set:y,remove:v,join:_,split:s,splitLast:function(e){const t=s(e);if(0===t.length)return\"string\"==typeof e&&\"#\"===e[0]?[\"#\",t[0]]:[\"\",void 0];if(1===t.length)return\"#\"===e[0]?[\"#\",t[0]]:[\"\",t[0]];const n=t.pop();return[_(t,\"#\"===e[0]),n]},isRoot:n,removeUndefinedItems:j};return t})()));","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","\"use strict\";\n// https://www.w3.org/TR/REC-xml/#NT-Name\n// http://www.bottlecaps.de/rr/ui\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Grammar\t::=\tProduction*\n// Production\t::=\tNCName '::=' Choice\n// NCName\t::=\t[http://www.w3.org/TR/xml-names/#NT-NCName]\n// Choice\t::=\tSequenceOrDifference ( '|' SequenceOrDifference )*\n// SequenceOrDifference\t::=\t(Item ( '-' Item | Item* ))?\n// Item\t::=\tPrimary ( '?' | '*' | '+' )?\n// Primary\t::=\tNCName | StringLiteral | CharCode | CharClass | '(' Choice ')'\n// StringLiteral\t::=\t'\"' [^\"]* '\"' | \"'\" [^']* \"'\"\n// CharCode\t::=\t'#x' [0-9a-fA-F]+\n// CharClass\t::=\t'[' '^'? ( RULE_Char | CharCode | CharRange | CharCodeRange )+ ']'\n// RULE_Char\t::=\t[http://www.w3.org/TR/xml#NT-RULE_Char]\n// CharRange\t::=\tRULE_Char '-' ( RULE_Char - ']' )\n// CharCodeRange\t::=\tCharCode '-' CharCode\n// RULE_WHITESPACE\t::=\tRULE_S | Comment\n// RULE_S\t::=\t#x9 | #xA | #xD | #x20\n// Comment\t::=\t'/*' ( [^*] | '*'+ [^*/] )* '*'* '*/'\nconst Parser_1 = require(\"../Parser\");\nvar BNF;\n(function (BNF) {\n BNF.RULES = [\n {\n name: 'Grammar',\n bnf: [['RULE_S*', '%Atomic*', 'EOF']]\n },\n {\n name: '%Atomic',\n bnf: [['Production', 'RULE_S*']],\n fragment: true\n },\n {\n name: 'Production',\n bnf: [['NCName', 'RULE_S*', '\"::=\"', 'RULE_WHITESPACE*', 'Choice', 'RULE_WHITESPACE*', 'RULE_EOL+', 'RULE_S*']]\n },\n {\n name: 'NCName',\n bnf: [[/[a-zA-Z][a-zA-Z_0-9]*/]]\n },\n {\n name: 'Choice',\n bnf: [['SequenceOrDifference', '%_Choice_1*']],\n fragment: true\n },\n {\n name: '%_Choice_1',\n bnf: [['RULE_WHITESPACE*', '\"|\"', 'RULE_WHITESPACE*', 'SequenceOrDifference']],\n fragment: true\n },\n {\n name: 'SequenceOrDifference',\n bnf: [['Item', 'RULE_WHITESPACE*', '%_Item_1?']]\n },\n {\n name: '%_Item_1',\n bnf: [['Minus', 'Item'], ['Item*']],\n fragment: true\n },\n {\n name: 'Minus',\n bnf: [['\"-\"']]\n },\n {\n name: 'Item',\n bnf: [['RULE_WHITESPACE*', '%Primary', 'PrimaryDecoration?']],\n fragment: true\n },\n {\n name: 'PrimaryDecoration',\n bnf: [['\"?\"'], ['\"*\"'], ['\"+\"']]\n },\n {\n name: 'DecorationName',\n bnf: [['\"ebnf://\"', /[^\\x5D#]+/]]\n },\n {\n name: '%Primary',\n bnf: [['NCName'], ['StringLiteral'], ['CharCode'], ['CharClass'], ['SubItem']],\n fragment: true\n },\n {\n name: 'SubItem',\n bnf: [['\"(\"', 'RULE_WHITESPACE*', 'Choice', 'RULE_WHITESPACE*', '\")\"']]\n },\n {\n name: 'StringLiteral',\n bnf: [[`'\"'`, /[^\"]*/, `'\"'`], [`\"'\"`, /[^']*/, `\"'\"`]],\n pinned: 1\n },\n {\n name: 'CharCode',\n bnf: [['\"#x\"', /[0-9a-zA-Z]+/]]\n },\n {\n name: 'CharClass',\n bnf: [[\"'['\", \"'^'?\", '%RULE_CharClass_1+', '\"]\"']]\n },\n {\n name: '%RULE_CharClass_1',\n bnf: [['CharCodeRange'], ['CharRange'], ['CharCode'], ['RULE_Char']],\n fragment: true\n },\n {\n name: 'RULE_Char',\n bnf: [[/\\x09/], [/\\x0A/], [/\\x0D/], [/[\\x20-\\x5c]/], [/[\\x5e-\\uD7FF]/], [/[\\uE000-\\uFFFD]/]]\n },\n {\n name: 'CharRange',\n bnf: [['RULE_Char', '\"-\"', 'RULE_Char']]\n },\n {\n name: 'CharCodeRange',\n bnf: [['CharCode', '\"-\"', 'CharCode']]\n },\n {\n name: 'RULE_WHITESPACE',\n bnf: [['%RULE_WHITESPACE_CHAR*'], ['Comment', 'RULE_WHITESPACE*']]\n },\n {\n name: 'RULE_S',\n bnf: [['RULE_WHITESPACE', 'RULE_S*'], ['RULE_EOL', 'RULE_S*']]\n },\n {\n name: '%RULE_WHITESPACE_CHAR',\n bnf: [[/\\x09/], [/\\x20/]],\n fragment: true\n },\n {\n name: 'Comment',\n bnf: [['\"/*\"', '%RULE_Comment_Body*', '\"*/\"']]\n },\n {\n name: '%RULE_Comment_Body',\n bnf: [['!\"*/\"', /[^*]/]],\n fragment: true\n },\n {\n name: 'RULE_EOL',\n bnf: [[/\\x0D/, /\\x0A/], [/\\x0A/], [/\\x0D/]]\n },\n {\n name: 'Link',\n bnf: [[\"'['\", 'Url', \"']'\"]]\n },\n {\n name: 'Url',\n bnf: [[/[^\\x5D:/?#]/, '\"://\"', /[^\\x5D#]+/, '%Url1?']]\n },\n {\n name: '%Url1',\n bnf: [['\"#\"', 'NCName']],\n fragment: true\n }\n ];\n BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false });\n const preDecorationRE = /^(!|&)/;\n const decorationRE = /(\\?|\\+|\\*)$/;\n const subExpressionRE = /^%/;\n function getBNFRule(name, parser) {\n if (typeof name == 'string') {\n if (preDecorationRE.test(name))\n return '';\n let subexpression = subExpressionRE.test(name);\n if (subexpression) {\n let decoration = decorationRE.exec(name);\n let decorationText = decoration ? decoration[0] + ' ' : '';\n let lonely = isLonelyRule(name, parser);\n if (lonely)\n return getBNFBody(name, parser) + decorationText;\n return '(' + getBNFBody(name, parser) + ')' + decorationText;\n }\n return name;\n }\n else {\n return name.source\n .replace(/\\\\(?:x|u)([a-zA-Z0-9]+)/g, '#x$1')\n .replace(/\\[\\\\(?:x|u)([a-zA-Z0-9]+)-\\\\(?:x|u)([a-zA-Z0-9]+)\\]/g, '[#x$1-#x$2]');\n }\n }\n /// Returns true if the rule is a string literal or regular expression without a descendant tree\n function isLonelyRule(name, parser) {\n let rule = Parser_1.findRuleByName(name, parser);\n return (rule &&\n rule.bnf.length == 1 &&\n rule.bnf[0].length == 1 &&\n (rule.bnf[0][0] instanceof RegExp || rule.bnf[0][0][0] == '\"' || rule.bnf[0][0][0] == \"'\"));\n }\n function getBNFChoice(rules, parser) {\n return rules.map(x => getBNFRule(x, parser)).join(' ');\n }\n function getBNFBody(name, parser) {\n let rule = Parser_1.findRuleByName(name, parser);\n if (rule)\n return rule.bnf.map(x => getBNFChoice(x, parser)).join(' | ');\n return 'RULE_NOT_FOUND {' + name + '}';\n }\n function emit(parser) {\n let acumulator = [];\n parser.grammarRules.forEach(l => {\n if (!/^%/.test(l.name)) {\n let recover = l.recover ? ' /* { recoverUntil=' + l.recover + ' } */' : '';\n acumulator.push(l.name + ' ::= ' + getBNFBody(l.name, parser) + recover);\n }\n });\n return acumulator.join('\\n');\n }\n BNF.emit = emit;\n let subitems = 0;\n function restar(total, resta) {\n console.log('reberia restar ' + resta + ' a ' + total);\n throw new Error('Difference not supported yet');\n }\n function convertRegex(txt) {\n return new RegExp(txt\n .replace(/#x([a-zA-Z0-9]{4})/g, '\\\\u$1')\n .replace(/#x([a-zA-Z0-9]{3})/g, '\\\\u0$1')\n .replace(/#x([a-zA-Z0-9]{2})/g, '\\\\x$1')\n .replace(/#x([a-zA-Z0-9]{1})/g, '\\\\x0$1'));\n }\n function getSubItems(tmpRules, seq, parentName) {\n let anterior = null;\n let bnfSeq = [];\n seq.children.forEach((x, i) => {\n if (x.type == 'Minus') {\n restar(anterior, x);\n }\n else {\n }\n let decoration = seq.children[i + 1];\n decoration = (decoration && decoration.type == 'PrimaryDecoration' && decoration.text) || '';\n let preDecoration = '';\n switch (x.type) {\n case 'SubItem':\n let name = '%' + (parentName + subitems++);\n createRule(tmpRules, x, name);\n bnfSeq.push(preDecoration + name + decoration);\n break;\n case 'NCName':\n case 'StringLiteral':\n bnfSeq.push(preDecoration + x.text + decoration);\n break;\n case 'CharCode':\n case 'CharClass':\n if (decoration || preDecoration) {\n let newRule = {\n name: '%' + (parentName + subitems++),\n bnf: [[convertRegex(x.text)]]\n };\n tmpRules.push(newRule);\n bnfSeq.push(preDecoration + newRule.name + decoration);\n }\n else {\n bnfSeq.push(convertRegex(x.text));\n }\n break;\n case 'PrimaryDecoration':\n break;\n default:\n throw new Error(' HOW SHOULD I PARSE THIS? ' + x.type + ' -> ' + JSON.stringify(x.text));\n }\n anterior = x;\n });\n return bnfSeq;\n }\n function createRule(tmpRules, token, name) {\n let bnf = token.children.filter(x => x.type == 'SequenceOrDifference').map(s => getSubItems(tmpRules, s, name));\n let rule = {\n name,\n bnf\n };\n let recover = null;\n bnf.forEach(x => {\n recover = recover || x['recover'];\n delete x['recover'];\n });\n if (name.indexOf('%') == 0)\n rule.fragment = true;\n if (recover)\n rule.recover = recover;\n tmpRules.push(rule);\n }\n function getRules(source, parser = BNF.defaultParser) {\n let ast = parser.getAST(source);\n if (!ast)\n throw new Error('Could not parse ' + source);\n if (ast.errors && ast.errors.length) {\n throw ast.errors[0];\n }\n let tmpRules = [];\n ast.children.filter(x => x.type == 'Production').map((x) => {\n let name = x.children.filter(x => x.type == 'NCName')[0].text;\n createRule(tmpRules, x, name);\n });\n return tmpRules;\n }\n BNF.getRules = getRules;\n function Transform(source, subParser = BNF.defaultParser) {\n return getRules(source.join(''), subParser);\n }\n BNF.Transform = Transform;\n class Parser extends Parser_1.Parser {\n constructor(source, options) {\n const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser;\n super(getRules(source, subParser), options);\n }\n emitSource() {\n return emit(this);\n }\n }\n BNF.Parser = Parser;\n})(BNF || (BNF = {}));\nexports.default = BNF;\n//# sourceMappingURL=W3CEBNF.js.map","\"use strict\";\n// https://www.ics.uci.edu/~pattis/ICS-33/lectures/ebnf.pdf\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = exports.findRuleByName = exports.parseRuleName = exports.escapeRegExp = exports.readToken = void 0;\nconst UPPER_SNAKE_RE = /^[A-Z0-9_]+$/;\nconst decorationRE = /(\\?|\\+|\\*)$/;\nconst preDecorationRE = /^(@|&|!)/;\nconst WS_RULE = 'WS';\nconst TokenError_1 = require(\"./TokenError\");\nfunction readToken(txt, expr) {\n let result = expr.exec(txt);\n if (result && result.index == 0) {\n if (result[0].length == 0 && expr.source.length > 0)\n return null;\n return {\n type: null,\n text: result[0],\n rest: txt.substr(result[0].length),\n start: 0,\n end: result[0].length - 1,\n fullText: result[0],\n errors: [],\n children: [],\n parent: null\n };\n }\n return null;\n}\nexports.readToken = readToken;\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nexports.escapeRegExp = escapeRegExp;\nfunction fixRest(token) {\n token.rest = '';\n token.children && token.children.forEach(c => fixRest(c));\n}\nfunction fixPositions(token, start) {\n token.start += start;\n token.end += start;\n token.children && token.children.forEach(c => fixPositions(c, token.start));\n}\nfunction agregateErrors(errors, token) {\n if (token.errors && token.errors.length)\n token.errors.forEach(err => errors.push(err));\n token.children && token.children.forEach(tok => agregateErrors(errors, tok));\n}\nfunction parseRuleName(name) {\n let postDecoration = decorationRE.exec(name);\n let preDecoration = preDecorationRE.exec(name);\n let postDecorationText = (postDecoration && postDecoration[0]) || '';\n let preDecorationText = (preDecoration && preDecoration[0]) || '';\n let out = {\n raw: name,\n name: name.replace(decorationRE, '').replace(preDecorationRE, ''),\n isOptional: postDecorationText == '?' || postDecorationText == '*',\n allowRepetition: postDecorationText == '+' || postDecorationText == '*',\n atLeastOne: postDecorationText == '+',\n lookupPositive: preDecorationText == '&',\n lookupNegative: preDecorationText == '!',\n pinned: preDecorationText == '@',\n lookup: false,\n isLiteral: false\n };\n out.isLiteral = out.name[0] == \"'\" || out.name[0] == '\"';\n out.lookup = out.lookupNegative || out.lookupPositive;\n return out;\n}\nexports.parseRuleName = parseRuleName;\nfunction findRuleByName(name, parser) {\n let parsed = parseRuleName(name);\n return parser.cachedRules[parsed.name] || null;\n}\nexports.findRuleByName = findRuleByName;\n/// Removes all the nodes starting with 'RULE_'\nfunction stripRules(token, re) {\n if (token.children) {\n let localRules = token.children.filter(x => x.type && re.test(x.type));\n for (let i = 0; i < localRules.length; i++) {\n let indexOnChildren = token.children.indexOf(localRules[i]);\n if (indexOnChildren != -1) {\n token.children.splice(indexOnChildren, 1);\n }\n }\n token.children.forEach(c => stripRules(c, re));\n }\n}\nconst ignoreMissingRules = ['EOF'];\nclass Parser {\n constructor(grammarRules, options) {\n this.grammarRules = grammarRules;\n this.options = options;\n this.cachedRules = {};\n this.debug = options ? options.debug === true : false;\n let errors = [];\n let neededRules = [];\n grammarRules.forEach(rule => {\n let parsedName = parseRuleName(rule.name);\n if (parsedName.name in this.cachedRules) {\n errors.push('Duplicated rule ' + parsedName.name);\n return;\n }\n else {\n this.cachedRules[parsedName.name] = rule;\n }\n if (!rule.bnf || !rule.bnf.length) {\n let error = 'Missing rule content, rule: ' + rule.name;\n if (errors.indexOf(error) == -1)\n errors.push(error);\n }\n else {\n rule.bnf.forEach(options => {\n if (typeof options[0] === 'string') {\n let parsed = parseRuleName(options[0]);\n if (parsed.name == rule.name) {\n let error = 'Left recursion is not allowed, rule: ' + rule.name;\n if (errors.indexOf(error) == -1)\n errors.push(error);\n }\n }\n options.forEach(option => {\n if (typeof option == 'string') {\n let name = parseRuleName(option);\n if (!name.isLiteral &&\n neededRules.indexOf(name.name) == -1 &&\n ignoreMissingRules.indexOf(name.name) == -1)\n neededRules.push(name.name);\n }\n });\n });\n }\n if (WS_RULE == rule.name)\n rule.implicitWs = false;\n if (rule.implicitWs) {\n if (neededRules.indexOf(WS_RULE) == -1)\n neededRules.push(WS_RULE);\n }\n if (rule.recover) {\n if (neededRules.indexOf(rule.recover) == -1)\n neededRules.push(rule.recover);\n }\n });\n neededRules.forEach(ruleName => {\n if (!(ruleName in this.cachedRules)) {\n errors.push('Missing rule ' + ruleName);\n }\n });\n if (errors.length)\n throw new Error(errors.join('\\n'));\n }\n getAST(txt, target) {\n if (!target) {\n target = this.grammarRules.filter(x => !x.fragment && x.name.indexOf('%') != 0)[0].name;\n }\n let result = this.parse(txt, target);\n if (result) {\n agregateErrors(result.errors, result);\n fixPositions(result, 0);\n // REMOVE ALL THE TAGS MATCHING /^%/\n stripRules(result, /^%/);\n if (!this.options || !this.options.keepUpperRules)\n stripRules(result, UPPER_SNAKE_RE);\n let rest = result.rest;\n if (rest) {\n new TokenError_1.TokenError('Unexpected end of input: \\n' + rest, result);\n }\n fixRest(result);\n result.rest = rest;\n }\n return result;\n }\n emitSource() {\n return 'CANNOT EMIT SOURCE FROM BASE Parser';\n }\n parse(txt, target, recursion = 0) {\n let out = null;\n let type = parseRuleName(target);\n let expr;\n let printable = this.debug && /*!isLiteral &*/ !UPPER_SNAKE_RE.test(type.name);\n printable &&\n console.log(new Array(recursion).join('│ ') + 'Trying to get ' + target + ' from ' + JSON.stringify(txt.split('\\n')[0]));\n let realType = type.name;\n let targetLex = findRuleByName(type.name, this);\n if (type.name == 'EOF') {\n if (txt.length) {\n return null;\n }\n else if (txt.length == 0) {\n return {\n type: 'EOF',\n text: '',\n rest: '',\n start: 0,\n end: 0,\n fullText: '',\n errors: [],\n children: [],\n parent: null\n };\n }\n }\n try {\n if (!targetLex && type.isLiteral) {\n // tslint:disable-next-line: no-eval\n let src = eval(type.name);\n if (src === '') {\n return {\n type: '%%EMPTY%%',\n text: '',\n rest: txt,\n start: 0,\n end: 0,\n fullText: '',\n errors: [],\n children: [],\n parent: null\n };\n }\n expr = new RegExp(escapeRegExp(src));\n realType = null;\n }\n }\n catch (e) {\n if (e instanceof ReferenceError) {\n console.error(e);\n }\n return null;\n }\n if (expr) {\n let result = readToken(txt, expr);\n if (result) {\n result.type = realType;\n return result;\n }\n }\n else {\n let options = targetLex.bnf;\n if (options instanceof Array) {\n options.forEach(phases => {\n if (out)\n return;\n let pinned = null;\n let tmp = {\n type: type.name,\n text: '',\n children: [],\n end: 0,\n errors: [],\n fullText: '',\n parent: null,\n start: 0,\n rest: txt\n };\n if (targetLex.fragment)\n tmp.fragment = true;\n let tmpTxt = txt;\n let position = 0;\n let allOptional = phases.length > 0;\n let foundSomething = false;\n for (let i = 0; i < phases.length; i++) {\n if (typeof phases[i] == 'string') {\n let localTarget = parseRuleName(phases[i]);\n allOptional = allOptional && localTarget.isOptional;\n let got;\n let foundAtLeastOne = false;\n do {\n got = null;\n if (targetLex.implicitWs) {\n got = this.parse(tmpTxt, localTarget.name, recursion + 1);\n if (!got) {\n let WS;\n do {\n WS = this.parse(tmpTxt, WS_RULE, recursion + 1);\n if (WS) {\n tmp.text = tmp.text + WS.text;\n tmp.end = tmp.text.length;\n WS.parent = tmp;\n tmp.children.push(WS);\n tmpTxt = tmpTxt.substr(WS.text.length);\n position += WS.text.length;\n }\n else {\n break;\n }\n } while (WS && WS.text.length);\n }\n }\n got = got || this.parse(tmpTxt, localTarget.name, recursion + 1);\n // rule ::= \"true\" ![a-zA-Z]\n // negative lookup, if it does not match, we should continue\n if (localTarget.lookupNegative) {\n if (got)\n return /* cancel this path */;\n break;\n }\n if (localTarget.lookupPositive) {\n if (!got)\n return;\n }\n if (!got) {\n if (localTarget.isOptional)\n break;\n if (localTarget.atLeastOne && foundAtLeastOne)\n break;\n }\n if (got && targetLex.pinned == i + 1) {\n pinned = got;\n printable && console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' PINNED');\n }\n if (!got)\n got = this.parseRecovery(targetLex, tmpTxt, recursion + 1);\n if (!got) {\n if (pinned) {\n out = tmp;\n got = {\n type: 'SyntaxError',\n text: tmpTxt,\n children: [],\n end: tmpTxt.length,\n errors: [],\n fullText: '',\n parent: null,\n start: 0,\n rest: ''\n };\n if (tmpTxt.length) {\n new TokenError_1.TokenError(`Unexpected end of input. Expecting ${localTarget.name} Got: ${tmpTxt}`, got);\n }\n else {\n new TokenError_1.TokenError(`Unexpected end of input. Missing ${localTarget.name}`, got);\n }\n printable &&\n console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' ' + JSON.stringify(got.text));\n }\n else {\n return;\n }\n }\n foundAtLeastOne = true;\n foundSomething = true;\n if (got.type == '%%EMPTY%%') {\n break;\n }\n got.start += position;\n got.end += position;\n if (!localTarget.lookupPositive && got.type) {\n if (got.fragment) {\n got.children &&\n got.children.forEach(x => {\n x.start += position;\n x.end += position;\n x.parent = tmp;\n tmp.children.push(x);\n });\n }\n else {\n got.parent = tmp;\n tmp.children.push(got);\n }\n }\n if (localTarget.lookup)\n got.lookup = true;\n printable &&\n console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' ' + JSON.stringify(got.text));\n // Eat it from the input stream, only if it is not a lookup\n if (!localTarget.lookup && !got.lookup) {\n tmp.text = tmp.text + got.text;\n tmp.end = tmp.text.length;\n tmpTxt = tmpTxt.substr(got.text.length);\n position += got.text.length;\n }\n tmp.rest = tmpTxt;\n } while (got && localTarget.allowRepetition && tmpTxt.length && !got.lookup);\n } /* IS A REGEXP */\n else {\n let got = readToken(tmpTxt, phases[i]);\n if (!got) {\n return;\n }\n printable &&\n console.log(new Array(recursion + 1).join('│ ') + '└> ' + JSON.stringify(got.text) + phases[i].source);\n foundSomething = true;\n got.start += position;\n got.end += position;\n tmp.text = tmp.text + got.text;\n tmp.end = tmp.text.length;\n tmpTxt = tmpTxt.substr(got.text.length);\n position += got.text.length;\n tmp.rest = tmpTxt;\n }\n }\n if (foundSomething) {\n out = tmp;\n printable &&\n console.log(new Array(recursion).join('│ ') + '├<─┴< PUSHING ' + out.type + ' ' + JSON.stringify(out.text));\n }\n });\n }\n if (out && targetLex.simplifyWhenOneChildren && out.children.length == 1) {\n out = out.children[0];\n }\n }\n if (!out) {\n printable && console.log(target + ' NOT RESOLVED FROM ' + txt);\n }\n return out;\n }\n parseRecovery(recoverableToken, tmpTxt, recursion) {\n if (recoverableToken.recover && tmpTxt.length) {\n let printable = this.debug;\n printable &&\n console.log(new Array(recursion + 1).join('│ ') +\n 'Trying to recover until token ' +\n recoverableToken.recover +\n ' from ' +\n JSON.stringify(tmpTxt.split('\\n')[0] + tmpTxt.split('\\n')[1]));\n let tmp = {\n type: 'SyntaxError',\n text: '',\n children: [],\n end: 0,\n errors: [],\n fullText: '',\n parent: null,\n start: 0,\n rest: ''\n };\n let got;\n do {\n got = this.parse(tmpTxt, recoverableToken.recover, recursion + 1);\n if (got) {\n new TokenError_1.TokenError('Unexpected input: \"' + tmp.text + `\" Expecting: ${recoverableToken.name}`, tmp);\n break;\n }\n else {\n tmp.text = tmp.text + tmpTxt[0];\n tmp.end = tmp.text.length;\n tmpTxt = tmpTxt.substr(1);\n }\n } while (!got && tmpTxt.length > 0);\n if (tmp.text.length > 0 && got) {\n printable && console.log(new Array(recursion + 1).join('│ ') + 'Recovered text: ' + JSON.stringify(tmp.text));\n return tmp;\n }\n }\n return null;\n }\n}\nexports.Parser = Parser;\nexports.default = Parser;\n//# sourceMappingURL=Parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenError = void 0;\nclass TokenError extends Error {\n constructor(message, token) {\n super(message);\n this.message = message;\n this.token = token;\n if (token && token.errors)\n token.errors.push(this);\n else\n throw this;\n }\n inspect() {\n return 'SyntaxError: ' + this.message;\n }\n}\nexports.TokenError = TokenError;\n//# sourceMappingURL=TokenError.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","\"object\"==typeof navigator&&function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"Plyr\",t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Plyr=t()}(this,(function(){\"use strict\";function e(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function i(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a={addCSS:!0,thumbWidth:15,watch:!0};function l(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var o=function(e){return null!=e?e.constructor:null},r=function(e,t){return!!(e&&t&&e instanceof t)},c=function(e){return null==e},h=function(e){return o(e)===Object},u=function(e){return o(e)===String},d=function(e){return Array.isArray(e)},m=function(e){return r(e,NodeList)},p=u,g=d,f=m,b=function(e){return r(e,Element)},y=function(e){return r(e,Event)},v=function(e){return c(e)||(u(e)||d(e)||m(e))&&!e.length||h(e)&&!Object.keys(e).length};function w(e,t){if(1>t){var i=function(e){var t=\"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}var T=function(){function e(t,i){(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")})(this,e),b(t)?this.element=t:p(t)&&(this.element=document.querySelector(t)),b(this.element)&&v(this.element.rangeTouch)&&(this.config=n({},a,{},i),this.init())}return function(e,i,s){i&&t(e.prototype,i),s&&t(e,s)}(e,[{key:\"init\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"none\",this.element.style.webKitUserSelect=\"none\",this.element.style.touchAction=\"manipulation\"),this.listeners(!0),this.element.rangeTouch=this)}},{key:\"destroy\",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"\",this.element.style.webKitUserSelect=\"\",this.element.style.touchAction=\"\"),this.listeners(!1),this.element.rangeTouch=null)}},{key:\"listeners\",value:function(e){var t=this,i=e?\"addEventListener\":\"removeEventListener\";[\"touchstart\",\"touchmove\",\"touchend\"].forEach((function(e){t.element[i](e,(function(e){return t.set(e)}),!1)}))}},{key:\"get\",value:function(t){if(!e.enabled||!y(t))return null;var i,s=t.target,n=t.changedTouches[0],a=parseFloat(s.getAttribute(\"min\"))||0,l=parseFloat(s.getAttribute(\"max\"))||100,o=parseFloat(s.getAttribute(\"step\"))||1,r=s.getBoundingClientRect(),c=100/r.width*(this.config.thumbWidth/2)/100;return 0>(i=100/r.width*(n.clientX-r.left))?i=0:100<i&&(i=100),50>i?i-=(100-2*i)*c:50<i&&(i+=2*(i-50)*c),a+w(i/100*(l-a),o)}},{key:\"set\",value:function(t){e.enabled&&y(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var i=new Event(t,{bubbles:!0});e.dispatchEvent(i)}}(t.target,\"touchend\"===t.type?\"change\":\"input\"))}}],[{key:\"setup\",value:function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=null;if(v(t)||p(t)?s=Array.from(document.querySelectorAll(p(t)?t:'input[type=\"range\"]')):b(t)?s=[t]:f(t)?s=Array.from(t):g(t)&&(s=t.filter(b)),v(s))return null;var o=n({},a,{},i);if(p(t)&&o.watch){var r=new MutationObserver((function(i){Array.from(i).forEach((function(i){Array.from(i.addedNodes).forEach((function(i){b(i)&&l(i,t)&&new e(i,o)}))}))}));r.observe(document.body,{childList:!0,subtree:!0})}return s.map((function(t){return new e(t,i)}))}},{key:\"enabled\",get:function(){return\"ontouchstart\"in document.documentElement}}]),e}();const k=e=>null!=e?e.constructor:null,C=(e,t)=>Boolean(e&&t&&e instanceof t),A=e=>null==e,S=e=>k(e)===Object,E=e=>k(e)===String,P=e=>\"function\"==typeof e,M=e=>Array.isArray(e),N=e=>C(e,NodeList),x=e=>A(e)||(E(e)||M(e)||N(e))&&!e.length||S(e)&&!Object.keys(e).length;var I=A,L=S,$=e=>k(e)===Number&&!Number.isNaN(e),_=E,O=e=>k(e)===Boolean,j=P,D=M,q=N,H=e=>null!==e&&\"object\"==typeof e&&1===e.nodeType&&\"object\"==typeof e.style&&\"object\"==typeof e.ownerDocument,R=e=>C(e,Event),F=e=>C(e,KeyboardEvent),V=e=>C(e,TextTrack)||!A(e)&&E(e.kind),B=e=>C(e,Promise)&&P(e.then),U=e=>{if(C(e,window.URL))return!0;if(!E(e))return!1;let t=e;e.startsWith(\"http://\")&&e.startsWith(\"https://\")||(t=`http://${e}`);try{return!x(new URL(t).hostname)}catch(e){return!1}},W=x;const z=(()=>{const e=document.createElement(\"span\"),t={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"},i=Object.keys(t).find((t=>void 0!==e.style[t]));return!!_(i)&&t[i]})();function K(e,t){setTimeout((()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}const Y={isIE:Boolean(window.document.documentMode),isEdge:/Edge/g.test(navigator.userAgent),isWebkit:\"WebkitAppearance\"in document.documentElement.style&&!/Edge/g.test(navigator.userAgent),isIPhone:/iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1,isIos:/iPad|iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1};function Q(e,t){return t.split(\".\").reduce(((e,t)=>e&&e[t]),e)}function X(e={},...t){if(!t.length)return e;const i=t.shift();return L(i)?(Object.keys(i).forEach((t=>{L(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),X(e[t],i[t])):Object.assign(e,{[t]:i[t]})})),X(e,...t)):e}function J(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach(((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)}))}function G(e,t){H(e)&&!W(t)&&Object.entries(t).filter((([,e])=>!I(e))).forEach((([t,i])=>e.setAttribute(t,i)))}function Z(e,t,i){const s=document.createElement(e);return L(t)&&G(s,t),_(i)&&(s.innerText=i),s}function ee(e,t,i,s){H(t)&&t.appendChild(Z(e,i,s))}function te(e){q(e)||D(e)?Array.from(e).forEach(te):H(e)&&H(e.parentNode)&&e.parentNode.removeChild(e)}function ie(e){if(!H(e))return;let{length:t}=e.childNodes;for(;t>0;)e.removeChild(e.lastChild),t-=1}function se(e,t){return H(t)&&H(t.parentNode)&&H(e)?(t.parentNode.replaceChild(e,t),e):null}function ne(e,t){if(!_(e)||W(e))return{};const i={},s=X({},t);return e.split(\",\").forEach((e=>{const t=e.trim(),n=t.replace(\".\",\"\"),a=t.replace(/[[\\]]/g,\"\").split(\"=\"),[l]=a,o=a.length>1?a[1].replace(/[\"']/g,\"\"):\"\";switch(t.charAt(0)){case\".\":_(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case\"#\":i.id=t.replace(\"#\",\"\");break;case\"[\":i[l]=o}})),X(s,i)}function ae(e,t){if(!H(e))return;let i=t;O(i)||(i=!e.hidden),e.hidden=i}function le(e,t,i){if(q(e))return Array.from(e).map((e=>le(e,t,i)));if(H(e)){let s=\"toggle\";return void 0!==i&&(s=i?\"add\":\"remove\"),e.classList[s](t),e.classList.contains(t)}return!1}function oe(e,t){return H(e)&&e.classList.contains(t)}function re(e,t){const{prototype:i}=Element;return(i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function ce(e){return this.elements.container.querySelectorAll(e)}function he(e){return this.elements.container.querySelector(e)}function ue(e=null,t=!1){H(e)&&(e.focus({preventScroll:!0}),t&&le(e,this.config.classNames.tabFocus))}const de={\"audio/ogg\":\"vorbis\",\"audio/wav\":\"1\",\"video/webm\":\"vp8, vorbis\",\"video/mp4\":\"avc1.42E01E, mp4a.40.2\",\"video/ogg\":\"theora\"},me={audio:\"canPlayType\"in document.createElement(\"audio\"),video:\"canPlayType\"in document.createElement(\"video\"),check(e,t,i){const s=Y.isIPhone&&i&&me.playsinline,n=me[e]||\"html5\"!==t;return{api:n,ui:n&&me.rangeInput&&(\"video\"!==e||!Y.isIPhone||s)}},pip:!(Y.isIPhone||!j(Z(\"video\").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||Z(\"video\").disablePictureInPicture)),airplay:j(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:\"playsInline\"in document.createElement(\"video\"),mime(e){if(W(e))return!1;const[t]=e.split(\"/\");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(de).includes(i)&&(i+=`; codecs=\"${de[e]}\"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,\"\"))}catch(e){return!1}},textTracks:\"textTracks\"in document.createElement(\"video\"),rangeInput:(()=>{const e=document.createElement(\"input\");return e.type=\"range\",\"range\"===e.type})(),touch:\"ontouchstart\"in document.documentElement,transitions:!1!==z,reducedMotion:\"matchMedia\"in window&&window.matchMedia(\"(prefers-reduced-motion)\").matches},pe=(()=>{let e=!1;try{const t=Object.defineProperty({},\"passive\",{get:()=>(e=!0,null)});window.addEventListener(\"test\",null,t),window.removeEventListener(\"test\",null,t)}catch(e){}return e})();function ge(e,t,i,s=!1,n=!0,a=!1){if(!e||!(\"addEventListener\"in e)||W(t)||!j(i))return;const l=t.split(\" \");let o=a;pe&&(o={passive:n,capture:a}),l.forEach((t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:o}),e[s?\"addEventListener\":\"removeEventListener\"](t,i,o)}))}function fe(e,t=\"\",i,s=!0,n=!1){ge.call(this,e,t,i,!0,s,n)}function be(e,t=\"\",i,s=!0,n=!1){ge.call(this,e,t,i,!1,s,n)}function ye(e,t=\"\",i,s=!0,n=!1){const a=(...l)=>{be(e,t,a,s,n),i.apply(this,l)};ge.call(this,e,t,a,!0,s,n)}function ve(e,t=\"\",i=!1,s={}){if(!H(e)||W(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function we(){this&&this.eventListeners&&(this.eventListeners.forEach((e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)})),this.eventListeners=[])}function Te(){return new Promise((e=>this.ready?setTimeout(e,0):fe.call(this,this.elements.container,\"ready\",e))).then((()=>{}))}function ke(e){B(e)&&e.then(null,(()=>{}))}function Ce(e){return D(e)?e.filter(((t,i)=>e.indexOf(t)===i)):e}function Ae(e,t){return D(e)&&e.length?e.reduce(((e,i)=>Math.abs(i-t)<Math.abs(e-t)?i:e)):null}function Se(e){return!(!window||!window.CSS)&&window.CSS.supports(e)}const Ee=[[1,1],[4,3],[3,4],[5,4],[4,5],[3,2],[2,3],[16,10],[10,16],[16,9],[9,16],[21,9],[9,21],[32,9],[9,32]].reduce(((e,[t,i])=>({...e,[t/i]:[t,i]})),{});function Pe(e){if(!(D(e)||_(e)&&e.includes(\":\")))return!1;return(D(e)?e:e.split(\":\")).map(Number).every($)}function Me(e){if(!D(e)||!e.every($))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function Ne(e){const t=e=>Pe(e)?e.split(\":\").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!W(this.embed)&&D(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return Me(i)}function xe(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=Ne.call(this,e);if(!D(i))return{};const[s,n]=Me(i),a=100/s*n;if(Se(`aspect-ratio: ${s}/${n}`)?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${a}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-a)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:a,ratio:i}}function Ie(e,t,i=.05){const s=e/t,n=Ae(Object.keys(Ee),s);return Math.abs(n-s)<=i?Ee[n]:[e,t]}const Le={getSources(){if(!this.isHTML5)return[];return Array.from(this.media.querySelectorAll(\"source\")).filter((e=>{const t=e.getAttribute(\"type\");return!!W(t)||me.mime.call(this,t)}))},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:Le.getSources.call(this).map((e=>Number(e.getAttribute(\"size\")))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,W(this.config.ratio)||xe.call(e),Object.defineProperty(e.media,\"quality\",{get(){const t=Le.getSources.call(e).find((t=>t.getAttribute(\"src\")===e.source));return t&&Number(t.getAttribute(\"size\"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&j(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=Le.getSources.call(e).find((e=>Number(e.getAttribute(\"size\"))===t));if(!i)return;const{currentTime:s,paused:n,preload:a,readyState:l,playbackRate:o}=e.media;e.media.src=i.getAttribute(\"src\"),(\"none\"!==a||l)&&(e.once(\"loadedmetadata\",(()=>{e.speed=o,e.currentTime=s,n||ke(e.play())})),e.media.load())}ve.call(e,e.media,\"qualitychange\",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(te(Le.getSources.call(this)),this.media.setAttribute(\"src\",this.config.blankVideo),this.media.load(),this.debug.log(\"Cancelled network requests\"))}};function $e(e,...t){return W(e)?e:e.toString().replace(/{(\\d+)}/g,((e,i)=>t[i].toString()))}const _e=(e=\"\",t=\"\",i=\"\")=>e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g,\"\\\\$1\"),\"g\"),i.toString()),Oe=(e=\"\")=>e.toString().replace(/\\w\\S*/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()));function je(e=\"\"){let t=e.toString();return t=function(e=\"\"){let t=e.toString();return t=_e(t,\"-\",\" \"),t=_e(t,\"_\",\" \"),t=Oe(t),_e(t,\" \",\"\")}(t),t.charAt(0).toLowerCase()+t.slice(1)}function De(e){const t=document.createElement(\"div\");return t.appendChild(e),t.innerHTML}const qe={pip:\"PIP\",airplay:\"AirPlay\",html5:\"HTML5\",vimeo:\"Vimeo\",youtube:\"YouTube\"},He={get(e=\"\",t={}){if(W(e)||W(t))return\"\";let i=Q(t.i18n,e);if(W(i))return Object.keys(qe).includes(e)?qe[e]:\"\";const s={\"{seektime}\":t.seekTime,\"{title}\":t.title};return Object.entries(s).forEach((([e,t])=>{i=_e(i,e,t)})),i}};class Re{constructor(t){e(this,\"get\",(e=>{if(!Re.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(W(t))return null;const i=JSON.parse(t);return _(e)&&e.length?i[e]:i})),e(this,\"set\",(e=>{if(!Re.supported||!this.enabled)return;if(!L(e))return;let t=this.get();W(t)&&(t={}),X(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch(e){}})),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}static get supported(){try{if(!(\"localStorage\"in window))return!1;const e=\"___test\";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}}function Fe(e,t=\"text\"){return new Promise(((i,s)=>{try{const s=new XMLHttpRequest;if(!(\"withCredentials\"in s))return;s.addEventListener(\"load\",(()=>{if(\"text\"===t)try{i(JSON.parse(s.responseText))}catch(e){i(s.responseText)}else i(s.response)})),s.addEventListener(\"error\",(()=>{throw new Error(s.status)})),s.open(\"GET\",e,!0),s.responseType=t,s.send()}catch(e){s(e)}}))}function Ve(e,t){if(!_(e))return;const i=_(t);let s=!1;const n=()=>null!==document.getElementById(t),a=(e,t)=>{e.innerHTML=t,i&&n()||document.body.insertAdjacentElement(\"afterbegin\",e)};if(!i||!n()){const n=Re.supported,l=document.createElement(\"div\");if(l.setAttribute(\"hidden\",\"\"),i&&l.setAttribute(\"id\",t),n){const e=window.localStorage.getItem(`cache-${t}`);if(s=null!==e,s){const t=JSON.parse(e);a(l,t.content)}}Fe(e).then((e=>{if(!W(e)){if(n)try{window.localStorage.setItem(`cache-${t}`,JSON.stringify({content:e}))}catch(e){}a(l,e)}})).catch((()=>{}))}}const Be=e=>Math.trunc(e/60/60%60,10);function Ue(e=0,t=!1,i=!1){if(!$(e))return Ue(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=Be(e);const a=(l=e,Math.trunc(l/60%60,10));var l;const o=(e=>Math.trunc(e%60,10))(e);return n=t||n>0?`${n}:`:\"\",`${i&&e>0?\"-\":\"\"}${n}${s(a)}:${s(o)}`}const We={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||Y.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=he.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:ce.call(this,this.config.selectors.buttons.play),pause:he.call(this,this.config.selectors.buttons.pause),restart:he.call(this,this.config.selectors.buttons.restart),rewind:he.call(this,this.config.selectors.buttons.rewind),fastForward:he.call(this,this.config.selectors.buttons.fastForward),mute:he.call(this,this.config.selectors.buttons.mute),pip:he.call(this,this.config.selectors.buttons.pip),airplay:he.call(this,this.config.selectors.buttons.airplay),settings:he.call(this,this.config.selectors.buttons.settings),captions:he.call(this,this.config.selectors.buttons.captions),fullscreen:he.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=he.call(this,this.config.selectors.progress),this.elements.inputs={seek:he.call(this,this.config.selectors.inputs.seek),volume:he.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:he.call(this,this.config.selectors.display.buffer),currentTime:he.call(this,this.config.selectors.display.currentTime),duration:he.call(this,this.config.selectors.display.duration)},H(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn(\"It looks like there is a problem with your custom controls HTML\",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i=\"http://www.w3.org/2000/svg\",s=We.getIconUrl.call(this),n=`${s.cors?\"\":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,\"svg\");G(a,X(t,{\"aria-hidden\":\"true\",focusable:\"false\"}));const l=document.createElementNS(i,\"use\"),o=`${n}-${e}`;return\"href\"in l&&l.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",o),l.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"xlink:href\",o),a.appendChild(l),a},createLabel(e,t={}){const i=He.get(e,this.config);return Z(\"span\",{...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(\" \")},i)},createBadge(e){if(W(e))return null;const t=Z(\"span\",{class:this.config.classNames.menu.value});return t.appendChild(Z(\"span\",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=X({},t);let s=je(e);const n={element:\"button\",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch([\"element\",\"icon\",\"label\"].forEach((e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])})),\"button\"!==n.element||Object.keys(i).includes(\"type\")||(i.type=\"button\"),Object.keys(i).includes(\"class\")?i.class.split(\" \").some((e=>e===this.config.classNames.control))||X(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case\"play\":n.toggle=!0,n.label=\"play\",n.labelPressed=\"pause\",n.icon=\"play\",n.iconPressed=\"pause\";break;case\"mute\":n.toggle=!0,n.label=\"mute\",n.labelPressed=\"unmute\",n.icon=\"volume\",n.iconPressed=\"muted\";break;case\"captions\":n.toggle=!0,n.label=\"enableCaptions\",n.labelPressed=\"disableCaptions\",n.icon=\"captions-off\",n.iconPressed=\"captions-on\";break;case\"fullscreen\":n.toggle=!0,n.label=\"enterFullscreen\",n.labelPressed=\"exitFullscreen\",n.icon=\"enter-fullscreen\",n.iconPressed=\"exit-fullscreen\";break;case\"play-large\":i.class+=` ${this.config.classNames.control}--overlaid`,s=\"play\",n.label=\"play\",n.icon=\"play\";break;default:W(n.label)&&(n.label=s),W(n.icon)&&(n.icon=e)}const a=Z(n.element);return n.toggle?(a.appendChild(We.createIcon.call(this,n.iconPressed,{class:\"icon--pressed\"})),a.appendChild(We.createIcon.call(this,n.icon,{class:\"icon--not-pressed\"})),a.appendChild(We.createLabel.call(this,n.labelPressed,{class:\"label--pressed\"})),a.appendChild(We.createLabel.call(this,n.label,{class:\"label--not-pressed\"}))):(a.appendChild(We.createIcon.call(this,n.icon)),a.appendChild(We.createLabel.call(this,n.label))),X(i,ne(this.config.selectors.buttons[s],i)),G(a,i),\"play\"===s?(D(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=Z(\"input\",X(ne(this.config.selectors.inputs[e]),{type:\"range\",min:0,max:100,step:.01,value:0,autocomplete:\"off\",role:\"slider\",\"aria-label\":He.get(e,this.config),\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":0},t));return this.elements.inputs[e]=i,We.updateRangeFill.call(this,i),T.setup(i),i},createProgress(e,t){const i=Z(\"progress\",X(ne(this.config.selectors.display[e]),{min:0,max:100,value:0,role:\"progressbar\",\"aria-hidden\":!0},t));if(\"volume\"!==e){i.appendChild(Z(\"span\",null,\"0\"));const t={played:\"played\",buffer:\"buffered\"}[e],s=t?He.get(t,this.config):\"\";i.innerText=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=ne(this.config.selectors.display[e],t),s=Z(\"div\",X(i,{class:`${i.class?i.class:\"\"} ${this.config.classNames.display.time} `.trim(),\"aria-label\":He.get(e,this.config)}),\"00:00\");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){fe.call(this,e,\"keydown keyup\",(i=>{if(![\"Space\",\"ArrowUp\",\"ArrowDown\",\"ArrowRight\"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),\"keydown\"===i.type)return;const s=re(e,'[role=\"menuitemradio\"]');if(!s&&[\"Space\",\"ArrowRight\"].includes(i.key))We.showMenuPanel.call(this,t,!0);else{let t;\"Space\"!==i.key&&(\"ArrowDown\"===i.key||s&&\"ArrowRight\"===i.key?(t=e.nextElementSibling,H(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,H(t)||(t=e.parentNode.lastElementChild)),ue.call(this,t,!0))}}),!1),fe.call(this,e,\"keyup\",(e=>{\"Return\"===e.key&&We.focusFirstMenuItem.call(this,null,!0)}))},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const l=ne(this.config.selectors.inputs[i]),o=Z(\"button\",X(l,{type:\"button\",role:\"menuitemradio\",class:`${this.config.classNames.control} ${l.class?l.class:\"\"}`.trim(),\"aria-checked\":a,value:e})),r=Z(\"span\");r.innerHTML=s,H(n)&&r.appendChild(n),o.appendChild(r),Object.defineProperty(o,\"checked\",{enumerable:!0,get:()=>\"true\"===o.getAttribute(\"aria-checked\"),set(e){e&&Array.from(o.parentNode.children).filter((e=>re(e,'[role=\"menuitemradio\"]'))).forEach((e=>e.setAttribute(\"aria-checked\",\"false\"))),o.setAttribute(\"aria-checked\",e?\"true\":\"false\")}}),this.listeners.bind(o,\"click keyup\",(t=>{if(!F(t)||\"Space\"===t.key){switch(t.preventDefault(),t.stopPropagation(),o.checked=!0,i){case\"language\":this.currentTrack=Number(e);break;case\"quality\":this.quality=e;break;case\"speed\":this.speed=parseFloat(e)}We.showMenuPanel.call(this,\"home\",F(t))}}),i,!1),We.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!$(e))return e;return Ue(e,Be(this.duration)>0,t)},updateTimeDisplay(e=null,t=0,i=!1){H(e)&&$(t)&&(e.innerText=We.formatTime(t,i))},updateVolume(){this.supported.ui&&(H(this.elements.inputs.volume)&&We.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),H(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){H(e)&&(e.value=t,We.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!R(e))return;let t=0;const i=(e,t)=>{const i=$(t)?t:0,s=H(e)?e:this.elements.display.buffer;if(H(s)){s.value=i;const e=s.getElementsByTagName(\"span\")[0];H(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case\"timeupdate\":case\"seeking\":case\"seeked\":s=this.currentTime,n=this.duration,t=0===s||0===n||Number.isNaN(s)||Number.isNaN(n)?0:(s/n*100).toFixed(2),\"timeupdate\"===e.type&&We.setRange.call(this,this.elements.inputs.seek,t);break;case\"playing\":case\"progress\":i(this.elements.display.buffer,100*this.buffered)}var s,n},updateRangeFill(e){const t=R(e)?e.target:e;if(H(t)&&\"range\"===t.getAttribute(\"type\")){if(re(t,this.config.selectors.inputs.seek)){t.setAttribute(\"aria-valuenow\",this.currentTime);const e=We.formatTime(this.currentTime),i=We.formatTime(this.duration),s=He.get(\"seekLabel\",this.config);t.setAttribute(\"aria-valuetext\",s.replace(\"{currentTime}\",e).replace(\"{duration}\",i))}else if(re(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute(\"aria-valuenow\",e),t.setAttribute(\"aria-valuetext\",`${e.toFixed(1)}%`)}else t.setAttribute(\"aria-valuenow\",t.value);Y.isWebkit&&t.style.setProperty(\"--value\",t.value/t.max*100+\"%\")}},updateSeekTooltip(e){var t,i;if(!this.config.tooltips.seek||!H(this.elements.inputs.seek)||!H(this.elements.display.seekTooltip)||0===this.duration)return;const s=this.elements.display.seekTooltip,n=`${this.config.classNames.tooltip}--visible`,a=e=>le(s,n,e);if(this.touch)return void a(!1);let l=0;const o=this.elements.progress.getBoundingClientRect();if(R(e))l=100/o.width*(e.pageX-o.left);else{if(!oe(s,n))return;l=parseFloat(s.style.left,10)}l<0?l=0:l>100&&(l=100);const r=this.duration/100*l;s.innerText=We.formatTime(r);const c=null===(t=this.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(r)));c&&s.insertAdjacentHTML(\"afterbegin\",`${c.label}<br>`),s.style.left=`${l}%`,R(e)&&[\"mouseenter\",\"mouseleave\"].includes(e.type)&&a(\"mouseenter\"===e.type)},timeUpdate(e){const t=!H(this.elements.display.duration)&&this.config.invertTime;We.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&\"timeupdate\"===e.type&&this.media.seeking||We.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return ae(this.elements.display.currentTime,!0),void ae(this.elements.progress,!0);H(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute(\"aria-valuemax\",this.duration);const e=H(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&We.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&We.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&We.setMarkers.call(this),We.updateSeekTooltip.call(this)},toggleMenuButton(e,t){ae(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if(\"captions\"===e)n=this.currentTrack;else{if(n=W(i)?this[e]:i,W(n)&&(n=this.config[e].default),!W(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(H(a)||(a=s&&s.querySelector('[role=\"menu\"]')),!H(a))return;this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`).innerHTML=We.getLabel.call(this,e,n);const l=a&&a.querySelector(`[value=\"${n}\"]`);H(l)&&(l.checked=!0)},getLabel(e,t){switch(e){case\"speed\":return 1===t?He.get(\"normal\",this.config):`${t}×`;case\"quality\":if($(t)){const e=He.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return Oe(t);case\"captions\":return Ye.getLabel.call(this);default:return null}},setQualityMenu(e){if(!H(this.elements.settings.panels.quality))return;const t=\"quality\",i=this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');D(e)&&(this.options.quality=Ce(e).filter((e=>this.config.quality.options.includes(e))));const s=!W(this.options.quality)&&this.options.quality.length>1;if(We.toggleMenuButton.call(this,t,s),ie(i),We.checkMenu.call(this),!s)return;const n=e=>{const t=He.get(`qualityBadge.${e}`,this.config);return t.length?We.createBadge.call(this,t):null};this.options.quality.sort(((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1})).forEach((e=>{We.createMenuItem.call(this,{value:e,list:i,type:t,title:We.getLabel.call(this,\"quality\",e),badge:n(e)})})),We.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!H(this.elements.settings.panels.captions))return;const e=\"captions\",t=this.elements.settings.panels.captions.querySelector('[role=\"menu\"]'),i=Ye.getTracks.call(this),s=Boolean(i.length);if(We.toggleMenuButton.call(this,e,s),ie(t),We.checkMenu.call(this),!s)return;const n=i.map(((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:Ye.getLabel.call(this,e),badge:e.language&&We.createBadge.call(this,e.language.toUpperCase()),list:t,type:\"language\"})));n.unshift({value:-1,checked:!this.captions.toggled,title:He.get(\"disabled\",this.config),list:t,type:\"language\"}),n.forEach(We.createMenuItem.bind(this)),We.updateSetting.call(this,e,t)},setSpeedMenu(){if(!H(this.elements.settings.panels.speed))return;const e=\"speed\",t=this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');this.options.speed=this.options.speed.filter((e=>e>=this.minimumSpeed&&e<=this.maximumSpeed));const i=!W(this.options.speed)&&this.options.speed.length>1;We.toggleMenuButton.call(this,e,i),ie(t),We.checkMenu.call(this),i&&(this.options.speed.forEach((i=>{We.createMenuItem.call(this,{value:i,list:t,type:e,title:We.getLabel.call(this,\"speed\",i)})})),We.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!W(e)&&Object.values(e).some((e=>!e.hidden));ae(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;H(i)||(i=Object.values(this.elements.settings.panels).find((e=>!e.hidden)));const s=i.querySelector('[role^=\"menuitem\"]');ue.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!H(t)||!H(i))return;const{hidden:s}=t;let n=s;if(O(e))n=e;else if(F(e)&&\"Escape\"===e.key)n=!1;else if(R(e)){const s=j(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute(\"aria-expanded\",n),ae(t,!n),le(this.elements.container,this.config.classNames.menu.open,n),n&&F(e)?We.focusFirstMenuItem.call(this,null,!0):n||s||ue.call(this,i,F(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position=\"absolute\",t.style.opacity=0,t.removeAttribute(\"hidden\"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return te(t),{width:i,height:s}},showMenuPanel(e=\"\",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!H(i))return;const s=i.parentNode,n=Array.from(s.children).find((e=>!e.hidden));if(me.transitions&&!me.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=We.getMenuSize.call(this,i),t=e=>{e.target===s&&[\"width\",\"height\"].includes(e.propertyName)&&(s.style.width=\"\",s.style.height=\"\",be.call(this,s,z,t))};fe.call(this,s,z,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}ae(n,!0),ae(i,!1),We.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;H(e)&&e.setAttribute(\"href\",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:l,setSpeedMenu:o,showMenuPanel:r}=We;this.elements.controls=null,D(this.config.controls)&&this.config.controls.includes(\"play-large\")&&this.elements.container.appendChild(i.call(this,\"play-large\"));const c=Z(\"div\",ne(this.config.selectors.controls.wrapper));this.elements.controls=c;const h={class:\"plyr__controls__item\"};return Ce(D(this.config.controls)?this.config.controls:[]).forEach((l=>{if(\"restart\"===l&&c.appendChild(i.call(this,\"restart\",h)),\"rewind\"===l&&c.appendChild(i.call(this,\"rewind\",h)),\"play\"===l&&c.appendChild(i.call(this,\"play\",h)),\"fast-forward\"===l&&c.appendChild(i.call(this,\"fast-forward\",h)),\"progress\"===l){const t=Z(\"div\",{class:`${h.class} plyr__progress__container`}),i=Z(\"div\",ne(this.config.selectors.progress));if(i.appendChild(n.call(this,\"seek\",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,\"buffer\")),this.config.tooltips.seek){const e=Z(\"span\",{class:this.config.classNames.tooltip},\"00:00\");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if(\"current-time\"===l&&c.appendChild(a.call(this,\"currentTime\",h)),\"duration\"===l&&c.appendChild(a.call(this,\"duration\",h)),\"mute\"===l||\"volume\"===l){let{volume:t}=this.elements;if(H(t)&&c.contains(t)||(t=Z(\"div\",X({},h,{class:`${h.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),\"mute\"===l&&t.appendChild(i.call(this,\"mute\")),\"volume\"===l&&!Y.isIos){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,\"volume\",X(i,{id:`plyr-volume-${e.id}`})))}}if(\"captions\"===l&&c.appendChild(i.call(this,\"captions\",h)),\"settings\"===l&&!W(this.config.settings)){const s=Z(\"div\",X({},h,{class:`${h.class} plyr__menu`.trim(),hidden:\"\"}));s.appendChild(i.call(this,\"settings\",{\"aria-haspopup\":!0,\"aria-controls\":`plyr-settings-${e.id}`,\"aria-expanded\":!1}));const n=Z(\"div\",{class:\"plyr__menu__container\",id:`plyr-settings-${e.id}`,hidden:\"\"}),a=Z(\"div\"),l=Z(\"div\",{id:`plyr-settings-${e.id}-home`}),o=Z(\"div\",{role:\"menu\"});l.appendChild(o),a.appendChild(l),this.elements.settings.panels.home=l,this.config.settings.forEach((i=>{const s=Z(\"button\",X(ne(this.config.selectors.buttons.settings),{type:\"button\",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:\"menuitem\",\"aria-haspopup\":!0,hidden:\"\"}));t.call(this,s,i),fe.call(this,s,\"click\",(()=>{r.call(this,i,!1)}));const n=Z(\"span\",null,He.get(i,this.config)),l=Z(\"span\",{class:this.config.classNames.menu.value});l.innerHTML=e[i],n.appendChild(l),s.appendChild(n),o.appendChild(s);const c=Z(\"div\",{id:`plyr-settings-${e.id}-${i}`,hidden:\"\"}),h=Z(\"button\",{type:\"button\",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});h.appendChild(Z(\"span\",{\"aria-hidden\":!0},He.get(i,this.config))),h.appendChild(Z(\"span\",{class:this.config.classNames.hidden},He.get(\"menuBack\",this.config))),fe.call(this,c,\"keydown\",(e=>{\"ArrowLeft\"===e.key&&(e.preventDefault(),e.stopPropagation(),r.call(this,\"home\",!0))}),!1),fe.call(this,h,\"click\",(()=>{r.call(this,\"home\",!1)})),c.appendChild(h),c.appendChild(Z(\"div\",{role:\"menu\"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c})),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if(\"pip\"===l&&me.pip&&c.appendChild(i.call(this,\"pip\",h)),\"airplay\"===l&&me.airplay&&c.appendChild(i.call(this,\"airplay\",h)),\"download\"===l){const e=X({},h,{element:\"a\",href:this.download,target:\"_blank\"});this.isHTML5&&(e.download=\"\");const{download:t}=this.config.urls;!U(t)&&this.isEmbed&&X(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,\"download\",e))}\"fullscreen\"===l&&c.appendChild(i.call(this,\"fullscreen\",h))})),this.isHTML5&&l.call(this,Le.getQualityOptions.call(this)),o.call(this),c},inject(){if(this.config.loadSprite){const e=We.getIconUrl.call(this);e.cors&&Ve(e.url,\"sprite-plyr\")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;j(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),H(this.config.controls)||_(this.config.controls)?e=this.config.controls:(e=We.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:Ye.getLabel.call(this)}),i=!1);let s;i&&_(this.config.controls)&&(e=(e=>{let i=e;return Object.entries(t).forEach((([e,t])=>{i=_e(i,`{${e}}`,t)})),i})(e)),_(this.config.selectors.controls.container)&&(s=document.querySelector(this.config.selectors.controls.container)),H(s)||(s=this.elements.container);if(s[H(e)?\"insertAdjacentElement\":\"insertAdjacentHTML\"](\"afterbegin\",e),H(this.elements.controls)||We.findElements.call(this),!W(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute(\"aria-pressed\",\"false\"),Object.defineProperty(e,\"pressed\",{configurable:!0,enumerable:!0,get:()=>oe(e,t),set(i=!1){le(e,t,i),e.setAttribute(\"aria-pressed\",i?\"true\":\"false\")}})};Object.values(this.elements.buttons).filter(Boolean).forEach((t=>{D(t)||q(t)?Array.from(t).filter(Boolean).forEach(e):e(t)}))}if(Y.isEdge&&K(s),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=ce.call(this,i);Array.from(s).forEach((e=>{le(e,this.config.classNames.hidden,!1),le(e,this.config.classNames.tooltip,!0)}))}},setMediaMetadata(){try{\"mediaSession\"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch(e){}},setMarkers(){var e,t;if(!this.duration||this.elements.markers)return;const i=null===(e=this.config.markers)||void 0===e||null===(t=e.points)||void 0===t?void 0:t.filter((({time:e})=>e>0&&e<this.duration));if(null==i||!i.length)return;const s=document.createDocumentFragment(),n=document.createDocumentFragment();let a=null;const l=`${this.config.classNames.tooltip}--visible`,o=e=>le(a,l,e);i.forEach((e=>{const t=Z(\"span\",{class:this.config.classNames.marker},\"\"),i=e.time/this.duration*100+\"%\";a&&(t.addEventListener(\"mouseenter\",(()=>{e.label||(a.style.left=i,a.innerHTML=e.label,o(!0))})),t.addEventListener(\"mouseleave\",(()=>{o(!1)}))),t.addEventListener(\"click\",(()=>{this.currentTime=e.time})),t.style.left=i,n.appendChild(t)})),s.appendChild(n),this.config.tooltips.seek||(a=Z(\"span\",{class:this.config.classNames.tooltip},\"\"),s.appendChild(a)),this.elements.markers={points:n,tip:a},this.elements.progress.appendChild(s)}};function ze(e,t=!0){let i=e;if(t){const e=document.createElement(\"a\");e.href=i,i=e.href}try{return new URL(i)}catch(e){return null}}function Ke(e){const t=new URLSearchParams;return L(e)&&Object.entries(e).forEach((([e,i])=>{t.set(e,i)})),t}const Ye={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!me.textTracks)return void(D(this.config.controls)&&this.config.controls.includes(\"settings\")&&this.config.settings.includes(\"captions\")&&We.setCaptionsMenu.call(this));var e,t;if(H(this.elements.captions)||(this.elements.captions=Z(\"div\",ne(this.config.selectors.captions)),this.elements.captions.setAttribute(\"dir\",\"auto\"),e=this.elements.captions,t=this.elements.wrapper,H(e)&&H(t)&&t.parentNode.insertBefore(e,t.nextSibling)),Y.isIE&&window.URL){const e=this.media.querySelectorAll(\"track\");Array.from(e).forEach((e=>{const t=e.getAttribute(\"src\"),i=ze(t);null!==i&&i.hostname!==window.location.href.hostname&&[\"http:\",\"https:\"].includes(i.protocol)&&Fe(t,\"blob\").then((t=>{e.setAttribute(\"src\",window.URL.createObjectURL(t))})).catch((()=>{te(e)}))}))}const i=Ce((navigator.languages||[navigator.language||navigator.userLanguage||\"en\"]).map((e=>e.split(\"-\")[0])));let s=(this.storage.get(\"language\")||this.config.captions.language||\"auto\").toLowerCase();\"auto\"===s&&([s]=i);let n=this.storage.get(\"captions\");if(O(n)||({active:n}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:n,language:s,languages:i}),this.isHTML5){const e=this.config.captions.update?\"addtrack removetrack\":\"removetrack\";fe.call(this,this.media.textTracks,e,Ye.update.bind(this))}setTimeout(Ye.update.bind(this),0)},update(){const e=Ye.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find((e=>e.language===i)));this.isHTML5&&this.isVideo&&e.filter((e=>!s.get(e))).forEach((e=>{this.debug.log(\"Track added\",e),s.set(e,{default:\"showing\"===e.mode}),\"showing\"===e.mode&&(e.mode=\"hidden\"),fe.call(this,e,\"cuechange\",(()=>Ye.updateCues.call(this)))})),(a&&this.language!==i||!e.includes(n))&&(Ye.setLanguage.call(this,i),Ye.toggle.call(this,t&&a)),this.elements&&le(this.elements.container,this.config.classNames.captions.enabled,!W(e)),D(this.config.controls)&&this.config.controls.includes(\"settings\")&&this.config.settings.includes(\"captions\")&&We.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=I(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=Ye.getTracks.call(this),t=Ye.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void Ye.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),le(this.elements.container,s,n),this.captions.toggled=n,We.updateSetting.call(this,\"captions\"),ve.call(this,this.media,n?\"captionsenabled\":\"captionsdisabled\")}setTimeout((()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode=\"hidden\")}))},set(e,t=!0){const i=Ye.getTracks.call(this);if(-1!==e)if($(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,We.updateSetting.call(this,\"captions\"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),ve.call(this,this.media,\"languagechange\")}Ye.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&Ye.updateCues.call(this)}else this.debug.warn(\"Track not found\",e);else this.debug.warn(\"Invalid caption argument\",e);else Ye.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!_(e))return void this.debug.warn(\"Invalid language argument\",e);const i=e.toLowerCase();this.captions.language=i;const s=Ye.getTracks.call(this),n=Ye.findTrack.call(this,[i]);Ye.set.call(this,s.indexOf(n),t)},getTracks(e=!1){return Array.from((this.media||{}).textTracks||[]).filter((t=>!this.isHTML5||e||this.captions.meta.has(t))).filter((e=>[\"captions\",\"subtitles\"].includes(e.kind)))},findTrack(e,t=!1){const i=Ye.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort(((e,t)=>s(t)-s(e)));let a;return e.every((e=>(a=n.find((t=>t.language===e)),!a))),a||(t?n[0]:void 0)},getCurrentTrack(){return Ye.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!V(t)&&me.textTracks&&this.captions.toggled&&(t=Ye.getCurrentTrack.call(this)),V(t)?W(t.label)?W(t.language)?He.get(\"enabled\",this.config):e.language.toUpperCase():t.label:He.get(\"disabled\",this.config)},updateCues(e){if(!this.supported.ui)return;if(!H(this.elements.captions))return void this.debug.warn(\"No captions element to render to\");if(!I(e)&&!Array.isArray(e))return void this.debug.warn(\"updateCues: Invalid input\",e);let t=e;if(!t){const e=Ye.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map((e=>e.getCueAsHTML())).map(De)}const i=t.map((e=>e.trim())).join(\"\\n\");if(i!==this.elements.captions.innerHTML){ie(this.elements.captions);const e=Z(\"span\",ne(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),ve.call(this,this.media,\"cuechange\")}}},Qe={enabled:!0,title:\"\",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:\"plyr\",iconUrl:\"https://cdn.plyr.io/3.7.3/plyr.svg\",blankVideo:\"https://cdn.plyr.io/static/blank.mp4\",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:\"auto\",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:\"plyr\"},controls:[\"play-large\",\"play\",\"progress\",\"current-time\",\"mute\",\"volume\",\"captions\",\"settings\",\"pip\",\"airplay\",\"fullscreen\"],settings:[\"captions\",\"quality\",\"speed\"],i18n:{restart:\"Restart\",rewind:\"Rewind {seektime}s\",play:\"Play\",pause:\"Pause\",fastForward:\"Forward {seektime}s\",seek:\"Seek\",seekLabel:\"{currentTime} of {duration}\",played:\"Played\",buffered:\"Buffered\",currentTime:\"Current time\",duration:\"Duration\",volume:\"Volume\",mute:\"Mute\",unmute:\"Unmute\",enableCaptions:\"Enable captions\",disableCaptions:\"Disable captions\",download:\"Download\",enterFullscreen:\"Enter fullscreen\",exitFullscreen:\"Exit fullscreen\",frameTitle:\"Player for {title}\",captions:\"Captions\",settings:\"Settings\",pip:\"PIP\",menuBack:\"Go back to previous menu\",speed:\"Speed\",normal:\"Normal\",quality:\"Quality\",loop:\"Loop\",start:\"Start\",end:\"End\",all:\"All\",reset:\"Reset\",disabled:\"Disabled\",enabled:\"Enabled\",advertisement:\"Ad\",qualityBadge:{2160:\"4K\",1440:\"HD\",1080:\"HD\",720:\"HD\",576:\"SD\",480:\"SD\"}},urls:{download:null,vimeo:{sdk:\"https://player.vimeo.com/api/player.js\",iframe:\"https://player.vimeo.com/video/{0}?{1}\",api:\"https://vimeo.com/api/oembed.json?url={0}\"},youtube:{sdk:\"https://www.youtube.com/iframe_api\",api:\"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}\"},googleIMA:{sdk:\"https://imasdk.googleapis.com/js/sdkloader/ima3.js\"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:[\"ended\",\"progress\",\"stalled\",\"playing\",\"waiting\",\"canplay\",\"canplaythrough\",\"loadstart\",\"loadeddata\",\"loadedmetadata\",\"timeupdate\",\"volumechange\",\"play\",\"pause\",\"error\",\"seeking\",\"seeked\",\"emptied\",\"ratechange\",\"cuechange\",\"download\",\"enterfullscreen\",\"exitfullscreen\",\"captionsenabled\",\"captionsdisabled\",\"languagechange\",\"controlshidden\",\"controlsshown\",\"ready\",\"statechange\",\"qualitychange\",\"adsloaded\",\"adscontentpause\",\"adscontentresume\",\"adstarted\",\"adsmidpoint\",\"adscomplete\",\"adsallcomplete\",\"adsimpression\",\"adsclick\"],selectors:{editable:\"input, textarea, select, [contenteditable]\",container:\".plyr\",controls:{container:null,wrapper:\".plyr__controls\"},labels:\"[data-plyr]\",buttons:{play:'[data-plyr=\"play\"]',pause:'[data-plyr=\"pause\"]',restart:'[data-plyr=\"restart\"]',rewind:'[data-plyr=\"rewind\"]',fastForward:'[data-plyr=\"fast-forward\"]',mute:'[data-plyr=\"mute\"]',captions:'[data-plyr=\"captions\"]',download:'[data-plyr=\"download\"]',fullscreen:'[data-plyr=\"fullscreen\"]',pip:'[data-plyr=\"pip\"]',airplay:'[data-plyr=\"airplay\"]',settings:'[data-plyr=\"settings\"]',loop:'[data-plyr=\"loop\"]'},inputs:{seek:'[data-plyr=\"seek\"]',volume:'[data-plyr=\"volume\"]',speed:'[data-plyr=\"speed\"]',language:'[data-plyr=\"language\"]',quality:'[data-plyr=\"quality\"]'},display:{currentTime:\".plyr__time--current\",duration:\".plyr__time--duration\",buffer:\".plyr__progress__buffer\",loop:\".plyr__progress__loop\",volume:\".plyr__volume--display\"},progress:\".plyr__progress\",captions:\".plyr__captions\",caption:\".plyr__caption\"},classNames:{type:\"plyr--{0}\",provider:\"plyr--{0}\",video:\"plyr__video-wrapper\",embed:\"plyr__video-embed\",videoFixedRatio:\"plyr__video-wrapper--fixed-ratio\",embedContainer:\"plyr__video-embed__container\",poster:\"plyr__poster\",posterEnabled:\"plyr__poster-enabled\",ads:\"plyr__ads\",control:\"plyr__control\",controlPressed:\"plyr__control--pressed\",playing:\"plyr--playing\",paused:\"plyr--paused\",stopped:\"plyr--stopped\",loading:\"plyr--loading\",hover:\"plyr--hover\",tooltip:\"plyr__tooltip\",cues:\"plyr__cues\",marker:\"plyr__progress__marker\",hidden:\"plyr__sr-only\",hideControls:\"plyr--hide-controls\",isIos:\"plyr--is-ios\",isTouch:\"plyr--is-touch\",uiSupported:\"plyr--full-ui\",noTransition:\"plyr--no-transition\",display:{time:\"plyr__time\"},menu:{value:\"plyr__menu__value\",badge:\"plyr__badge\",open:\"plyr--menu-open\"},captions:{enabled:\"plyr--captions-enabled\",active:\"plyr--captions-active\"},fullscreen:{enabled:\"plyr--fullscreen-enabled\",fallback:\"plyr--fullscreen-fallback\"},pip:{supported:\"plyr--pip-supported\",active:\"plyr--pip-active\"},airplay:{supported:\"plyr--airplay-supported\",active:\"plyr--airplay-active\"},tabFocus:\"plyr__tab-focus\",previewThumbnails:{thumbContainer:\"plyr__preview-thumb\",thumbContainerShown:\"plyr__preview-thumb--is-shown\",imageContainer:\"plyr__preview-thumb__image-container\",timeContainer:\"plyr__preview-thumb__time-container\",scrubbingContainer:\"plyr__preview-scrubbing\",scrubbingContainerShown:\"plyr__preview-scrubbing--is-shown\"}},attributes:{embed:{provider:\"data-plyr-provider\",id:\"data-plyr-embed-id\",hash:\"data-plyr-embed-hash\"}},ads:{enabled:!1,publisherId:\"\",tagUrl:\"\"},previewThumbnails:{enabled:!1,src:\"\"},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:\"\",artist:\"\",album:\"\",artwork:[]},markers:{enabled:!1,points:[]}},Xe=\"picture-in-picture\",Je=\"inline\",Ge={html5:\"html5\",youtube:\"youtube\",vimeo:\"vimeo\"},Ze=\"audio\",et=\"video\";const tt=()=>{};class it{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log(\"Debugging enabled\")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):tt}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):tt}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):tt}}class st{constructor(t){e(this,\"onChange\",(()=>{if(!this.enabled)return;const e=this.player.elements.buttons.fullscreen;H(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;ve.call(this.player,t,this.active?\"enterfullscreen\":\"exitfullscreen\",!0)})),e(this,\"toggleFallback\",((e=!1)=>{if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?\"hidden\":\"\",le(this.target,this.player.config.classNames.fullscreen.fallback,e),Y.isIos){let t=document.head.querySelector('meta[name=\"viewport\"]');const i=\"viewport-fit=cover\";t||(t=document.createElement(\"meta\"),t.setAttribute(\"name\",\"viewport\"));const s=_(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(\",\").filter((e=>e.trim()!==i)).join(\",\"))}this.onChange()})),e(this,\"trapFocus\",(e=>{if(Y.isIos||!this.active||\"Tab\"!==e.key)return;const t=document.activeElement,i=ce.call(this.player,\"a[href], button:not(:disabled), input:not(:disabled), [tabindex]\"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())})),e(this,\"update\",(()=>{if(this.enabled){let e;e=this.forceFallback?\"Fallback (forced)\":st.native?\"Native\":\"Fallback\",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log(\"Fullscreen not supported and fallback disabled\");le(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)})),e(this,\"enter\",(()=>{this.enabled&&(Y.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!st.native||this.forceFallback?this.toggleFallback(!0):this.prefix?W(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:\"hide\"}))})),e(this,\"exit\",(()=>{if(this.enabled)if(Y.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),ke(this.player.play());else if(!st.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!W(this.prefix)){const e=\"moz\"===this.prefix?\"Cancel\":\"Exit\";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)})),e(this,\"toggle\",(()=>{this.active?this.exit():this.enter()})),this.player=t,this.prefix=st.prefix,this.property=st.property,this.scrollPosition={x:0,y:0},this.forceFallback=\"force\"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){const{prototype:i}=Element;return(i.closest||function(){let e=this;do{if(re.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),fe.call(this.player,document,\"ms\"===this.prefix?\"MSFullscreenChange\":`${this.prefix}fullscreenchange`,(()=>{this.onChange()})),fe.call(this.player,this.player.elements.container,\"dblclick\",(e=>{H(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,\"fullscreen\")})),fe.call(this,this.player.elements.container,\"keydown\",(e=>this.trapFocus(e))),this.update()}static get native(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get usingNative(){return st.native&&!this.forceFallback}static get prefix(){if(j(document.exitFullscreen))return\"\";let e=\"\";return[\"webkit\",\"moz\",\"ms\"].some((t=>!(!j(document[`${t}ExitFullscreen`])&&!j(document[`${t}CancelFullScreen`]))&&(e=t,!0))),e}static get property(){return\"moz\"===this.prefix?\"FullScreen\":\"Fullscreen\"}get enabled(){return(st.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}get active(){if(!this.enabled)return!1;if(!st.native||this.forceFallback)return oe(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return Y.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}function nt(e,t=1){return new Promise(((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})}))}const at={addStyleHook(){le(this.elements.container,this.config.selectors.container.replace(\".\",\"\"),!0),le(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute(\"controls\",\"\"):this.media.removeAttribute(\"controls\")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void at.toggleNativeControls.call(this,!0);H(this.elements.controls)||(We.inject.call(this),this.listeners.controls()),at.toggleNativeControls.call(this),this.isHTML5&&Ye.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,We.updateVolume.call(this),We.timeUpdate.call(this),We.durationUpdate.call(this),at.checkPlaying.call(this),le(this.elements.container,this.config.classNames.pip.supported,me.pip&&this.isHTML5&&this.isVideo),le(this.elements.container,this.config.classNames.airplay.supported,me.airplay&&this.isHTML5),le(this.elements.container,this.config.classNames.isIos,Y.isIos),le(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((()=>{ve.call(this,this.media,\"ready\")}),0),at.setTitle.call(this),this.poster&&at.setPoster.call(this,this.poster,!1).catch((()=>{})),this.config.duration&&We.durationUpdate.call(this),this.config.mediaMetadata&&We.setMediaMetadata.call(this)},setTitle(){let e=He.get(\"play\",this.config);if(_(this.config.title)&&!W(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach((t=>{t.setAttribute(\"aria-label\",e)})),this.isEmbed){const e=he.call(this,\"iframe\");if(!H(e))return;const t=W(this.config.title)?\"video\":this.config.title,i=He.get(\"frameTitle\",this.config);e.setAttribute(\"title\",i.replace(\"{title}\",t))}},togglePoster(e){le(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error(\"Poster already set\")):(this.media.setAttribute(\"data-poster\",e),this.elements.poster.removeAttribute(\"hidden\"),Te.call(this).then((()=>nt(e))).catch((t=>{throw e===this.poster&&at.togglePoster.call(this,!1),t})).then((()=>{if(e!==this.poster)throw new Error(\"setPoster cancelled by later call to setPoster\")})).then((()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:\"\"}),at.togglePoster.call(this,!0),e))))},checkPlaying(e){le(this.elements.container,this.config.classNames.playing,this.playing),le(this.elements.container,this.config.classNames.paused,this.paused),le(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute(\"aria-label\",He.get(this.playing?\"pause\":\"play\",this.config))})),R(e)&&\"timeupdate\"===e.type||at.toggleControls.call(this)},checkLoading(e){this.loading=[\"stalled\",\"waiting\"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((()=>{le(this.elements.container,this.config.classNames.loading,this.loading),at.toggleControls.call(this)}),this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter((e=>!W(e)&&_(e)&&e.startsWith(\"--plyr\"))).forEach((e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)})),W(this.media.style)&&this.media.removeAttribute(\"style\")}};class lt{constructor(t){e(this,\"firstTouch\",(()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,le(t.container,e.config.classNames.isTouch,!0)})),e(this,\"setTabFocus\",(e=>{const{player:t}=this,{elements:i}=t,{key:s,type:n,timeStamp:a}=e;if(clearTimeout(this.focusTimer),\"keydown\"===n&&\"Tab\"!==s)return;\"keydown\"===n&&(this.lastKeyDown=a);const l=a-this.lastKeyDown<=20;(\"focus\"!==n||l)&&((()=>{const e=t.config.classNames.tabFocus;le(ce.call(t,`.${e}`),e,!1)})(),\"focusout\"!==n&&(this.focusTimer=setTimeout((()=>{const e=document.activeElement;i.container.contains(e)&&le(document.activeElement,t.config.classNames.tabFocus,!0)}),10)))})),e(this,\"global\",((e=!0)=>{const{player:t}=this;t.config.keyboard.global&&ge.call(t,window,\"keydown keyup\",this.handleKey,e,!1),ge.call(t,document.body,\"click\",this.toggleMenu,e),ye.call(t,document.body,\"touchstart\",this.firstTouch),ge.call(t,document.body,\"keydown focus blur focusout\",this.setTabFocus,e,!1,!0)})),e(this,\"container\",(()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&fe.call(e,i.container,\"keydown keyup\",this.handleKey,!1),fe.call(e,i.container,\"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen\",(t=>{const{controls:n}=i;n&&\"enterfullscreen\"===t.type&&(n.pressed=!1,n.hover=!1);let a=0;[\"touchstart\",\"touchmove\",\"mousemove\"].includes(t.type)&&(at.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout((()=>at.toggleControls.call(e,!1)),a)}));const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=Ne.call(e),l=Se(`aspect-ratio: ${n} / ${a}`);if(!s)return void(l?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[o,r]=[Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)],c=o/r>n/a;l?(t.style.width=c?\"auto\":\"100%\",t.style.height=c?\"100%\":\"auto\"):(t.style.maxWidth=c?r/a*n+\"px\":null,t.style.margin=c?\"0 auto\":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};fe.call(e,i.container,\"enterfullscreen exitfullscreen\",(t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&W(e.config.ratio))return;n();(\"enterfullscreen\"===t.type?fe:be).call(e,window,\"resize\",a)}))})),e(this,\"media\",(()=>{const{player:e}=this,{elements:t}=e;if(fe.call(e,e.media,\"timeupdate seeking seeked\",(t=>We.timeUpdate.call(e,t))),fe.call(e,e.media,\"durationchange loadeddata loadedmetadata\",(t=>We.durationUpdate.call(e,t))),fe.call(e,e.media,\"ended\",(()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())})),fe.call(e,e.media,\"progress playing seeking seeked\",(t=>We.updateProgress.call(e,t))),fe.call(e,e.media,\"volumechange\",(t=>We.updateVolume.call(e,t))),fe.call(e,e.media,\"playing play pause ended emptied timeupdate\",(t=>at.checkPlaying.call(e,t))),fe.call(e,e.media,\"waiting canplay seeked playing\",(t=>at.checkLoading.call(e,t))),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=he.call(e,`.${e.config.classNames.video}`);if(!H(i))return;fe.call(e,t.container,\"click\",(s=>{([t.container,i].includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,\"restart\"),this.proxy(s,(()=>{ke(e.play())}),\"play\")):this.proxy(s,(()=>{ke(e.togglePlay())}),\"play\")))}))}e.supported.ui&&e.config.disableContextMenu&&fe.call(e,t.wrapper,\"contextmenu\",(e=>{e.preventDefault()}),!1),fe.call(e,e.media,\"volumechange\",(()=>{e.storage.set({volume:e.volume,muted:e.muted})})),fe.call(e,e.media,\"ratechange\",(()=>{We.updateSetting.call(e,\"speed\"),e.storage.set({speed:e.speed})})),fe.call(e,e.media,\"qualitychange\",(t=>{We.updateSetting.call(e,\"quality\",null,t.detail.quality)})),fe.call(e,e.media,\"ready qualitychange\",(()=>{We.setDownloadUrl.call(e)}));const i=e.config.events.concat([\"keyup\",\"keydown\"]).join(\" \");fe.call(e,e.media,i,(i=>{let{detail:s={}}=i;\"error\"===i.type&&(s=e.media.error),ve.call(e,t.container,i.type,!0,s)}))})),e(this,\"proxy\",((e,t,i)=>{const{player:s}=this,n=s.config.listeners[i];let a=!0;j(n)&&(a=n.call(s,e)),!1!==a&&j(t)&&t.call(s,e)})),e(this,\"bind\",((e,t,i,s,n=!0)=>{const{player:a}=this,l=a.config.listeners[s],o=j(l);fe.call(a,e,t,(e=>this.proxy(e,i,s)),n&&!o)})),e(this,\"controls\",(()=>{const{player:e}=this,{elements:t}=e,i=Y.isIE?\"change\":\"input\";if(t.buttons.play&&Array.from(t.buttons.play).forEach((t=>{this.bind(t,\"click\",(()=>{ke(e.togglePlay())}),\"play\")})),this.bind(t.buttons.restart,\"click\",e.restart,\"restart\"),this.bind(t.buttons.rewind,\"click\",(()=>{e.lastSeekTime=Date.now(),e.rewind()}),\"rewind\"),this.bind(t.buttons.fastForward,\"click\",(()=>{e.lastSeekTime=Date.now(),e.forward()}),\"fastForward\"),this.bind(t.buttons.mute,\"click\",(()=>{e.muted=!e.muted}),\"mute\"),this.bind(t.buttons.captions,\"click\",(()=>e.toggleCaptions())),this.bind(t.buttons.download,\"click\",(()=>{ve.call(e,e.media,\"download\")}),\"download\"),this.bind(t.buttons.fullscreen,\"click\",(()=>{e.fullscreen.toggle()}),\"fullscreen\"),this.bind(t.buttons.pip,\"click\",(()=>{e.pip=\"toggle\"}),\"pip\"),this.bind(t.buttons.airplay,\"click\",e.airplay,\"airplay\"),this.bind(t.buttons.settings,\"click\",(t=>{t.stopPropagation(),t.preventDefault(),We.toggleMenu.call(e,t)}),null,!1),this.bind(t.buttons.settings,\"keyup\",(t=>{[\"Space\",\"Enter\"].includes(t.key)&&(\"Enter\"!==t.key?(t.preventDefault(),t.stopPropagation(),We.toggleMenu.call(e,t)):We.focusFirstMenuItem.call(e,null,!0))}),null,!1),this.bind(t.settings.menu,\"keydown\",(t=>{\"Escape\"===t.key&&We.toggleMenu.call(e,t)})),this.bind(t.inputs.seek,\"mousedown mousemove\",(e=>{const i=t.progress.getBoundingClientRect(),s=100/i.width*(e.pageX-i.left);e.currentTarget.setAttribute(\"seek-value\",s)})),this.bind(t.inputs.seek,\"mousedown mouseup keydown keyup touchstart touchend\",(t=>{const i=t.currentTarget,s=\"play-on-seeked\";if(F(t)&&![\"ArrowLeft\",\"ArrowRight\"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=[\"mouseup\",\"touchend\",\"keyup\"].includes(t.type);n&&a?(i.removeAttribute(s),ke(e.play())):!a&&e.playing&&(i.setAttribute(s,\"\"),e.pause())})),Y.isIos){const t=ce.call(e,'input[type=\"range\"]');Array.from(t).forEach((e=>this.bind(e,i,(e=>K(e.target)))))}this.bind(t.inputs.seek,i,(t=>{const i=t.currentTarget;let s=i.getAttribute(\"seek-value\");W(s)&&(s=i.value),i.removeAttribute(\"seek-value\"),e.currentTime=s/i.max*e.duration}),\"seek\"),this.bind(t.progress,\"mouseenter mouseleave mousemove\",(t=>We.updateSeekTooltip.call(e,t))),this.bind(t.progress,\"mousemove touchmove\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)})),this.bind(t.progress,\"mouseleave touchend click\",(()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)})),this.bind(t.progress,\"mousedown touchstart\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)})),this.bind(t.progress,\"mouseup touchend\",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)})),Y.isWebkit&&Array.from(ce.call(e,'input[type=\"range\"]')).forEach((t=>{this.bind(t,\"input\",(t=>We.updateRangeFill.call(e,t.target)))})),e.config.toggleInvert&&!H(t.display.duration)&&this.bind(t.display.currentTime,\"click\",(()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,We.timeUpdate.call(e))})),this.bind(t.inputs.volume,i,(t=>{e.volume=t.target.value}),\"volume\"),this.bind(t.controls,\"mouseenter mouseleave\",(i=>{t.controls.hover=!e.touch&&\"mouseenter\"===i.type})),t.fullscreen&&Array.from(t.fullscreen.children).filter((e=>!e.contains(t.container))).forEach((i=>{this.bind(i,\"mouseenter mouseleave\",(i=>{t.controls&&(t.controls.hover=!e.touch&&\"mouseenter\"===i.type)}))})),this.bind(t.controls,\"mousedown mouseup touchstart touchend touchcancel\",(e=>{t.controls.pressed=[\"mousedown\",\"touchstart\"].includes(e.type)})),this.bind(t.controls,\"focusin\",(()=>{const{config:i,timers:s}=e;le(t.controls,i.classNames.noTransition,!0),at.toggleControls.call(e,!0),setTimeout((()=>{le(t.controls,i.classNames.noTransition,!1)}),0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout((()=>at.toggleControls.call(e,!1)),n)})),this.bind(t.inputs.volume,\"wheel\",(t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map((e=>i?-e:e)),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:l}=e.media;(1===a&&l<1||-1===a&&l>0)&&t.preventDefault()}),\"volume\",!1)})),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:l,metaKey:o,shiftKey:r}=e,c=\"keydown\"===n,h=c&&s===this.lastKey;if(a||l||o||r)return;if(!s)return;if(c){const n=document.activeElement;if(H(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&re(n,s))return;if(\"Space\"===e.key&&re(n,'button, [role^=\"menuitem\"]'))return}switch([\"Space\",\"ArrowLeft\",\"ArrowUp\",\"ArrowRight\",\"ArrowDown\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"c\",\"f\",\"k\",\"l\",\"m\"].includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case\"0\":case\"1\":case\"2\":case\"3\":case\"4\":case\"5\":case\"6\":case\"7\":case\"8\":case\"9\":h||(u=parseInt(s,10),t.currentTime=t.duration/10*u);break;case\"Space\":case\"k\":h||ke(t.togglePlay());break;case\"ArrowUp\":t.increaseVolume(.1);break;case\"ArrowDown\":t.decreaseVolume(.1);break;case\"m\":h||(t.muted=!t.muted);break;case\"ArrowRight\":t.forward();break;case\"ArrowLeft\":t.rewind();break;case\"f\":t.fullscreen.toggle();break;case\"c\":h||t.toggleCaptions();break;case\"l\":t.loop=!t.loop}\"Escape\"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null;var u}toggleMenu(e){We.toggleMenu.call(this.player,e)}}\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;var ot=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){e.exports=function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,l,o=[],r=e.length,c=r;for(n=function(e,i){i.length&&o.push(e),--c||t(o)};r--;)a=e[r],(l=i[a])?n(a,l):(s[a]=s[a]||[]).push(n)}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)for(;n.length;)n[0](e,t),n.splice(0,1)}}function l(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function o(t,i,s,n){var a,l,r=document,c=s.async,h=(s.numRetries||0)+1,u=s.before||e,d=t.replace(/[\\?|#].*$/,\"\"),m=t.replace(/^(css|img)!/,\"\");n=n||0,/(^css!|\\.css$)/.test(d)?((l=r.createElement(\"link\")).rel=\"stylesheet\",l.href=m,(a=\"hideFocus\"in l)&&l.relList&&(a=0,l.rel=\"preload\",l.as=\"style\")):/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(d)?(l=r.createElement(\"img\")).src=m:((l=r.createElement(\"script\")).src=t,l.async=void 0===c||c),l.onload=l.onerror=l.onbeforeload=function(e){var r=e.type[0];if(a)try{l.sheet.cssText.length||(r=\"e\")}catch(e){18!=e.code&&(r=\"e\")}if(\"e\"==r){if((n+=1)<h)return o(t,i,s,n)}else if(\"preload\"==l.rel&&\"style\"==l.as)return l.rel=\"stylesheet\";i(t,r,e.defaultPrevented)},!1!==u(t,l)&&r.head.appendChild(l)}function r(e,t,i){var s,n,a=(e=e.push?e:[e]).length,l=a,r=[];for(s=function(e,i,s){if(\"e\"==i&&r.push(e),\"b\"==i){if(!s)return;r.push(e)}--a||t(r)},n=0;n<l;n++)o(e[n],s,i)}function c(e,i,s){var n,o;if(i&&i.trim&&(n=i),o=(n?s:i)||{},n){if(n in t)throw\"LoadJS\";t[n]=!0}function c(t,i){r(e,(function(e){l(o,e),t&&l({success:t,error:i},e),a(n,e)}),o)}if(o.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return n(e,(function(e){l(t,e)})),c},c.done=function(e){a(e,[])},c.reset=function(){t={},i={},s={}},c.isDefined=function(e){return e in t},c}()}));function rt(e){return new Promise(((t,i)=>{ot(e,{success:t,error:i})}))}function ct(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,ve.call(this,this.media,e?\"play\":\"pause\"))}const ht={setup(){const e=this;le(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,xe.call(e),L(window.Vimeo)?ht.ready.call(e):rt(e.config.urls.vimeo.sdk).then((()=>{ht.ready.call(e)})).catch((t=>{e.debug.warn(\"Vimeo SDK (player.js) failed to load\",t)}))},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute(\"src\"),l=\"\";W(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),l=e.media.getAttribute(e.config.attributes.embed.hash)):l=function(e){const t=e.match(/^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*&*h=|\\/)+([\\d,a-f]+)/);return t&&5===t.length?t[4]:null}(a);const o=l?{h:l}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const r=Ke({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:\"media\",playsinline:!this.config.fullscreen.iosNative,...o,...n}),c=W(h=a)?null:$(Number(h))?h:h.match(/^.*(vimeo.com\\/|video\\/)(\\d+).*/)?RegExp.$2:h;var h;const u=Z(\"iframe\"),d=$e(e.config.urls.vimeo.iframe,c,r);if(u.setAttribute(\"src\",d),u.setAttribute(\"allowfullscreen\",\"\"),u.setAttribute(\"allow\",[\"autoplay\",\"fullscreen\",\"picture-in-picture\",\"encrypted-media\",\"accelerometer\",\"gyroscope\"].join(\"; \")),W(s)||u.setAttribute(\"referrerPolicy\",s),i||!t.customControls)u.setAttribute(\"data-poster\",e.poster),e.media=se(u,e.media);else{const t=Z(\"div\",{class:e.config.classNames.embedContainer,\"data-poster\":e.poster});t.appendChild(u),e.media=se(t,e.media)}t.customControls||Fe($e(e.config.urls.vimeo.api,d)).then((t=>{!W(t)&&t.thumbnail_url&&at.setPoster.call(e,t.thumbnail_url).catch((()=>{}))})),e.embed=new window.Vimeo.Player(u,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>(ct.call(e,!0),e.embed.play()),e.media.pause=()=>(ct.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:m}=e.media;Object.defineProperty(e.media,\"currentTime\",{get:()=>m,set(t){const{embed:i,media:s,paused:n,volume:a}=e,l=n&&!i.hasPlayed;s.seeking=!0,ve.call(e,s,\"seeking\"),Promise.resolve(l&&i.setVolume(0)).then((()=>i.setCurrentTime(t))).then((()=>l&&i.pause())).then((()=>l&&i.setVolume(a))).catch((()=>{}))}});let p=e.config.speed.selected;Object.defineProperty(e.media,\"playbackRate\",{get:()=>p,set(t){e.embed.setPlaybackRate(t).then((()=>{p=t,ve.call(e,e.media,\"ratechange\")})).catch((()=>{e.options.speed=[1]}))}});let{volume:g}=e.config;Object.defineProperty(e.media,\"volume\",{get:()=>g,set(t){e.embed.setVolume(t).then((()=>{g=t,ve.call(e,e.media,\"volumechange\")}))}});let{muted:f}=e.config;Object.defineProperty(e.media,\"muted\",{get:()=>f,set(t){const i=!!O(t)&&t;e.embed.setVolume(i?0:e.config.volume).then((()=>{f=i,ve.call(e,e.media,\"volumechange\")}))}});let b,{loop:y}=e.config;Object.defineProperty(e.media,\"loop\",{get:()=>y,set(t){const i=O(t)?t:e.config.loop.active;e.embed.setLoop(i).then((()=>{y=i}))}}),e.embed.getVideoUrl().then((t=>{b=t,We.setDownloadUrl.call(e)})).catch((e=>{this.debug.warn(e)})),Object.defineProperty(e.media,\"currentSrc\",{get:()=>b}),Object.defineProperty(e.media,\"ended\",{get:()=>e.currentTime===e.duration}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then((t=>{const[i,s]=t;e.embed.ratio=Ie(i,s),xe.call(this)})),e.embed.setAutopause(e.config.autopause).then((t=>{e.config.autopause=t})),e.embed.getVideoTitle().then((t=>{e.config.title=t,at.setTitle.call(this)})),e.embed.getCurrentTime().then((t=>{m=t,ve.call(e,e.media,\"timeupdate\")})),e.embed.getDuration().then((t=>{e.media.duration=t,ve.call(e,e.media,\"durationchange\")})),e.embed.getTextTracks().then((t=>{e.media.textTracks=t,Ye.setup.call(e)})),e.embed.on(\"cuechange\",(({cues:t=[]})=>{const i=t.map((e=>function(e){const t=document.createDocumentFragment(),i=document.createElement(\"div\");return t.appendChild(i),i.innerHTML=e,t.firstChild.innerText}(e.text)));Ye.updateCues.call(e,i)})),e.embed.on(\"loaded\",(()=>{if(e.embed.getPaused().then((t=>{ct.call(e,!t),t||ve.call(e,e.media,\"playing\")})),H(e.embed.element)&&e.supported.ui){e.embed.element.setAttribute(\"tabindex\",-1)}})),e.embed.on(\"bufferstart\",(()=>{ve.call(e,e.media,\"waiting\")})),e.embed.on(\"bufferend\",(()=>{ve.call(e,e.media,\"playing\")})),e.embed.on(\"play\",(()=>{ct.call(e,!0),ve.call(e,e.media,\"playing\")})),e.embed.on(\"pause\",(()=>{ct.call(e,!1)})),e.embed.on(\"timeupdate\",(t=>{e.media.seeking=!1,m=t.seconds,ve.call(e,e.media,\"timeupdate\")})),e.embed.on(\"progress\",(t=>{e.media.buffered=t.percent,ve.call(e,e.media,\"progress\"),1===parseInt(t.percent,10)&&ve.call(e,e.media,\"canplaythrough\"),e.embed.getDuration().then((t=>{t!==e.media.duration&&(e.media.duration=t,ve.call(e,e.media,\"durationchange\"))}))})),e.embed.on(\"seeked\",(()=>{e.media.seeking=!1,ve.call(e,e.media,\"seeked\")})),e.embed.on(\"ended\",(()=>{e.media.paused=!0,ve.call(e,e.media,\"ended\")})),e.embed.on(\"error\",(t=>{e.media.error=t,ve.call(e,e.media,\"error\")})),t.customControls&&setTimeout((()=>at.build.call(e)),0)}};function ut(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,ve.call(this,this.media,e?\"play\":\"pause\"))}function dt(e){return e.noCookie?\"https://www.youtube-nocookie.com\":\"http:\"===window.location.protocol?\"http://www.youtube.com\":void 0}const mt={setup(){if(le(this.elements.wrapper,this.config.classNames.embed,!0),L(window.YT)&&j(window.YT.Player))mt.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{j(e)&&e(),mt.ready.call(this)},rt(this.config.urls.youtube.sdk).catch((e=>{this.debug.warn(\"YouTube API failed to load\",e)}))}},getTitle(e){Fe($e(this.config.urls.youtube.api,e)).then((e=>{if(L(e)){const{title:t,height:i,width:s}=e;this.config.title=t,at.setTitle.call(this),this.embed.ratio=Ie(s,i)}xe.call(this)})).catch((()=>{xe.call(this)}))},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute(\"id\");if(!W(i)&&i.startsWith(\"youtube-\"))return;let s=e.media.getAttribute(\"src\");W(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=W(a=s)?null:a.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/)?RegExp.$2:a;var a;const l=Z(\"div\",{id:`${e.provider}-${Math.floor(1e4*Math.random())}`,\"data-poster\":t.customControls?e.poster:void 0});if(e.media=se(l,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;nt(t(\"maxres\"),121).catch((()=>nt(t(\"sd\"),121))).catch((()=>nt(t(\"hq\")))).then((t=>at.setPoster.call(e,t.src))).then((t=>{t.includes(\"maxres\")||(e.elements.poster.style.backgroundSize=\"cover\")})).catch((()=>{}))}e.embed=new window.YT.Player(e.media,{videoId:n,host:dt(t),playerVars:X({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:\"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.\",5:\"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.\",100:\"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.\",101:\"The owner of the requested video does not allow it to be played in embedded players.\",150:\"The owner of the requested video does not allow it to be played in embedded players.\"}[i]||\"An unknown error occured\";e.media.error={code:i,message:s},ve.call(e,e.media,\"error\")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),ve.call(e,e.media,\"ratechange\")},onReady(i){if(j(e.media.play))return;const s=i.target;mt.getTitle.call(e,n),e.media.play=()=>{ut.call(e,!0),s.playVideo()},e.media.pause=()=>{ut.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,\"currentTime\",{get:()=>Number(s.getCurrentTime()),set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,ve.call(e,e.media,\"seeking\"),s.seekTo(t)}}),Object.defineProperty(e.media,\"playbackRate\",{get:()=>s.getPlaybackRate(),set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,\"volume\",{get:()=>a,set(t){a=t,s.setVolume(100*a),ve.call(e,e.media,\"volumechange\")}});let{muted:l}=e.config;Object.defineProperty(e.media,\"muted\",{get:()=>l,set(t){const i=O(t)?t:l;l=i,s[i?\"mute\":\"unMute\"](),s.setVolume(100*a),ve.call(e,e.media,\"volumechange\")}}),Object.defineProperty(e.media,\"currentSrc\",{get:()=>s.getVideoUrl()}),Object.defineProperty(e.media,\"ended\",{get:()=>e.currentTime===e.duration});const o=s.getAvailablePlaybackRates();e.options.speed=o.filter((t=>e.config.speed.options.includes(t))),e.supported.ui&&t.customControls&&e.media.setAttribute(\"tabindex\",-1),ve.call(e,e.media,\"timeupdate\"),ve.call(e,e.media,\"durationchange\"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&ve.call(e,e.media,\"progress\"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),ve.call(e,e.media,\"canplaythrough\"))}),200),t.customControls&&setTimeout((()=>at.build.call(e)),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);switch(e.media.seeking&&[1,2].includes(i.data)&&(e.media.seeking=!1,ve.call(e,e.media,\"seeked\")),i.data){case-1:ve.call(e,e.media,\"timeupdate\"),e.media.buffered=s.getVideoLoadedFraction(),ve.call(e,e.media,\"progress\");break;case 0:ut.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):ve.call(e,e.media,\"ended\");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(ut.call(e,!0),ve.call(e,e.media,\"playing\"),e.timers.playing=setInterval((()=>{ve.call(e,e.media,\"timeupdate\")}),50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),ve.call(e,e.media,\"durationchange\")));break;case 2:e.muted||e.embed.unMute(),ut.call(e,!1);break;case 3:ve.call(e,e.media,\"waiting\")}ve.call(e,e.elements.container,\"statechange\",!1,{code:i.data})}}})}},pt={setup(){this.media?(le(this.elements.container,this.config.classNames.type.replace(\"{0}\",this.type),!0),le(this.elements.container,this.config.classNames.provider.replace(\"{0}\",this.provider),!0),this.isEmbed&&le(this.elements.container,this.config.classNames.type.replace(\"{0}\",\"video\"),!0),this.isVideo&&(this.elements.wrapper=Z(\"div\",{class:this.config.classNames.video}),J(this.media,this.elements.wrapper),this.elements.poster=Z(\"div\",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?Le.setup.call(this):this.isYouTube?mt.setup.call(this):this.isVimeo&&ht.setup.call(this)):this.debug.warn(\"No media element found!\")}};class gt{constructor(t){e(this,\"load\",(()=>{this.enabled&&(L(window.google)&&L(window.google.ima)?this.ready():rt(this.player.config.urls.googleIMA.sdk).then((()=>{this.ready()})).catch((()=>{this.trigger(\"error\",new Error(\"Google IMA SDK failed to load\"))})))})),e(this,\"ready\",(()=>{var e;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,\"ready()\"),this.managerPromise.then((()=>{this.clearSafetyTimer(\"onAdsManagerLoaded()\")})),this.listeners(),this.setupIMA()})),e(this,\"setupIMA\",(()=>{this.elements.container=Z(\"div\",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(e=>this.onAdsManagerLoaded(e)),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e)),!1),this.requestAds()})),e(this,\"requestAds\",(()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}})),e(this,\"pollCountdown\",((e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute(\"data-badge-text\");this.countdownTimer=setInterval((()=>{const e=Ue(Math.max(this.manager.getRemainingTime(),0)),t=`${He.get(\"advertisement\",this.player.config)} - ${e}`;this.elements.container.setAttribute(\"data-badge-text\",t)}),100)})),e(this,\"onAdsManagerLoaded\",(e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e))),Object.keys(google.ima.AdEvent.Type).forEach((e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],(e=>this.onAdEvent(e)))})),this.trigger(\"loaded\")})),e(this,\"addCuePoints\",(()=>{W(this.cuePoints)||this.cuePoints.forEach((e=>{if(0!==e&&-1!==e&&e<this.player.duration){const t=this.player.elements.progress;if(H(t)){const i=100/this.player.duration*e,s=Z(\"span\",{class:this.player.config.classNames.cues});s.style.left=`${i.toString()}%`,t.appendChild(s)}}}))})),e(this,\"onAdEvent\",(e=>{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData();switch((e=>{ve.call(this.player,this.player.media,`ads${e.replace(/_/g,\"\").toLowerCase()}`)})(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger(\"loaded\"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`)}})),e(this,\"onAdError\",(e=>{this.cancel(),this.player.debug.warn(\"Ads error\",e)})),e(this,\"listeners\",(()=>{const{container:e}=this.player.elements;let t;this.player.on(\"canplay\",(()=>{this.addCuePoints()})),this.player.on(\"ended\",(()=>{this.loader.contentComplete()})),this.player.on(\"timeupdate\",(()=>{t=this.player.currentTime})),this.player.on(\"seeked\",(()=>{const e=this.player.currentTime;W(this.cuePoints)||this.cuePoints.forEach(((i,s)=>{t<i&&i<e&&(this.manager.discardAdBreak(),this.cuePoints.splice(s,1))}))})),window.addEventListener(\"resize\",(()=>{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)}))})),e(this,\"play\",(()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then((()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(e){this.onAdError(e)}})).catch((()=>{}))})),e(this,\"resumeContent\",(()=>{this.elements.container.style.zIndex=\"\",this.playing=!1,ke(this.player.media.play())})),e(this,\"pauseContent\",(()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()})),e(this,\"cancel\",(()=>{this.initialized&&this.resumeContent(),this.trigger(\"error\"),this.loadAds()})),e(this,\"loadAds\",(()=>{this.managerPromise.then((()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise((e=>{this.on(\"loaded\",e),this.player.debug.log(this.manager)})),this.initialized=!1,this.requestAds()})).catch((()=>{}))})),e(this,\"trigger\",((e,...t)=>{const i=this.events[e];D(i)&&i.forEach((e=>{j(e)&&e.apply(this,t)}))})),e(this,\"on\",((e,t)=>(D(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this))),e(this,\"startSafetyTimer\",((e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout((()=>{this.cancel(),this.clearSafetyTimer(\"startSafetyTimer()\")}),e)})),e(this,\"clearSafetyTimer\",(e=>{I(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)})),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise(((e,t)=>{this.on(\"loaded\",e),this.on(\"error\",t)})),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!W(e.publisherId)||U(e.tagUrl))}get tagUrl(){const{config:e}=this;if(U(e.tagUrl))return e.tagUrl;return`https://go.aniview.com/api/adserver6/vast/?${Ke({AV_PUBLISHERID:\"58c25bb0073ef448b1087ad6\",AV_CHANNELID:\"5a0458dc28a06145e4519d21\",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId})}`}}function ft(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}const bt=e=>{const t=[];return e.split(/\\r\\n\\r\\n|\\n\\n|\\r\\r/).forEach((e=>{const i={};e.split(/\\r\\n|\\n|\\r/).forEach((e=>{if($(i.startTime)){if(!W(e.trim())&&W(i.text)){const t=e.trim().split(\"#xywh=\");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(\",\"))}}else{const t=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}})),i.text&&t.push(i)})),t},yt=(e,t)=>{const i={};return e>t.width/t.height?(i.width=t.width,i.height=1/e*t.width):(i.height=t.height,i.width=e*t.height),i};class vt{constructor(t){e(this,\"load\",(()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.loaded=!0)}))})),e(this,\"getThumbnails\",(()=>new Promise((e=>{const{src:t}=this.player.config.previewThumbnails;if(W(t))throw new Error(\"Missing previewThumbnails.src config attribute\");const i=()=>{this.thumbnails.sort(((e,t)=>e.height-t.height)),this.player.debug.log(\"Preview thumbnails\",this.thumbnails),e()};if(j(t))t((e=>{this.thumbnails=e,i()}));else{const e=(_(t)?[t]:t).map((e=>this.getThumbnail(e)));Promise.all(e).then(i)}})))),e(this,\"getThumbnail\",(e=>new Promise((t=>{Fe(e).then((i=>{const s={frames:bt(i),height:null,urlPrefix:\"\"};s.frames[0].text.startsWith(\"/\")||s.frames[0].text.startsWith(\"http://\")||s.frames[0].text.startsWith(\"https://\")||(s.urlPrefix=e.substring(0,e.lastIndexOf(\"/\")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text}))})))),e(this,\"startMove\",(e=>{if(this.loaded&&R(e)&&[\"touchmove\",\"mousemove\"].includes(e.type)&&this.player.media.duration){if(\"touchmove\"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t,i;const s=this.player.elements.progress.getBoundingClientRect(),n=100/s.width*(e.pageX-s.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Ue(this.seekTime);const a=null===(t=this.player.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(this.seekTime)));a&&this.elements.thumb.time.insertAdjacentHTML(\"afterbegin\",`${a.label}<br>`)}this.showImageAtCurrentTime()}})),e(this,\"endMove\",(()=>{this.toggleThumbContainer(!1,!0)})),e(this,\"startScrubbing\",(e=>{(I(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))})),e(this,\"endScrubbing\",(()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ye.call(this.player,this.player.media,\"timeupdate\",(()=>{this.mouseDown||this.toggleScrubbingContainer(!1)}))})),e(this,\"listeners\",(()=>{this.player.on(\"play\",(()=>{this.toggleThumbContainer(!1,!0)})),this.player.on(\"seeked\",(()=>{this.toggleThumbContainer(!1)})),this.player.on(\"timeupdate\",(()=>{this.lastTime=this.player.media.currentTime}))})),e(this,\"render\",(()=>{this.elements.thumb.container=Z(\"div\",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Z(\"div\",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=Z(\"div\",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Z(\"span\",{},\"00:00\"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),H(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Z(\"div\",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)})),e(this,\"destroy\",(()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()})),e(this,\"showImageAtCurrentTime\",(()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex((e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime)),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)})),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))})),e(this,\"loadImage\",((e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,l=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=l,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${l}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}})),e(this,\"showImage\",((e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))})),e(this,\"removeOldImages\",(e=>{Array.from(this.currentImageContainer.children).forEach((t=>{if(\"img\"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout((()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)}),i)}}))})),e(this,\"preloadNearby\",((e,t=!0)=>new Promise((i=>{setTimeout((()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach((e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}})),a||i()}}),300)})))),e(this,\"getHigherQuality\",((e,t,i,s)=>{if(e<this.thumbnails.length-1){let n=t.naturalHeight;this.usingSprites&&(n=i.h),n<this.thumbContainerHeight&&setTimeout((()=>{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))}),300)}})),e(this,\"toggleThumbContainer\",((e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,\"toggleScrubbingContainer\",((e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,\"determineContainerAutoSizing\",(()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)})),e(this,\"setThumbContainerSizeAndPos\",(()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()})),e(this,\"setThumbContainerPos\",(()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,l=ft(a,s,n);i.style.left=`${l}px`,i.style.setProperty(\"--preview-arrow-offset\",a-l+\"px\")})),e(this,\"setScrubbingContainerSize\",(()=>{const{width:e,height:t}=yt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`})),e(this,\"setImageSizeAndOffset\",((e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+\"px\",e.style.width=e.naturalWidth*i+\"px\",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`})),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes(\"w\")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=yt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}const wt={insertElements(e,t){_(t)?ee(e,this.media,{src:t}):D(t)&&t.forEach((t=>{ee(e,this.media,t)}))},change(e){Q(e,\"sources.length\")?(Le.cancelRequests.call(this),this.destroy.call(this,(()=>{this.options.quality=[],te(this.media),this.media=null,H(this.elements.container)&&this.elements.container.removeAttribute(\"class\");const{sources:t,type:i}=e,[{provider:s=Ge.html5,src:n}]=t,a=\"html5\"===s?i:\"div\",l=\"html5\"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:me.check(i,s,this.config.playsinline),media:Z(a,l)}),this.elements.container.appendChild(this.media),O(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute(\"crossorigin\",\"\"),this.config.autoplay&&this.media.setAttribute(\"autoplay\",\"\"),W(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute(\"loop\",\"\"),this.config.muted&&this.media.setAttribute(\"muted\",\"\"),this.config.playsinline&&this.media.setAttribute(\"playsinline\",\"\")),at.addStyleHook.call(this),this.isHTML5&&wt.insertElements.call(this,\"source\",t),this.config.title=e.title,pt.setup.call(this),this.isHTML5&&Object.keys(e).includes(\"tracks\")&&wt.insertElements.call(this,\"track\",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&at.build.call(this),this.isHTML5&&this.media.load(),W(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new vt(this))),this.fullscreen.update()}),!0)):this.debug.warn(\"Invalid source format\")}};class Tt{constructor(t,i){if(e(this,\"play\",(()=>j(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((()=>this.ads.play())).catch((()=>ke(this.media.play()))),this.media.play()):null)),e(this,\"pause\",(()=>this.playing&&j(this.media.pause)?this.media.pause():null)),e(this,\"togglePlay\",(e=>(O(e)?e:!this.playing)?this.play():this.pause())),e(this,\"stop\",(()=>{this.isHTML5?(this.pause(),this.restart()):j(this.media.stop)&&this.media.stop()})),e(this,\"restart\",(()=>{this.currentTime=0})),e(this,\"rewind\",(e=>{this.currentTime-=$(e)?e:this.config.seekTime})),e(this,\"forward\",(e=>{this.currentTime+=$(e)?e:this.config.seekTime})),e(this,\"increaseVolume\",(e=>{const t=this.media.muted?0:this.volume;this.volume=t+($(e)?e:0)})),e(this,\"decreaseVolume\",(e=>{this.increaseVolume(-e)})),e(this,\"airplay\",(()=>{me.airplay&&this.media.webkitShowPlaybackTargetPicker()})),e(this,\"toggleControls\",(e=>{if(this.supported.ui&&!this.isAudio){const t=oe(this.elements.container,this.config.classNames.hideControls),i=void 0===e?void 0:!e,s=le(this.elements.container,this.config.classNames.hideControls,i);if(s&&D(this.config.controls)&&this.config.controls.includes(\"settings\")&&!W(this.config.settings)&&We.toggleMenu.call(this,!1),s!==t){const e=s?\"controlshidden\":\"controlsshown\";ve.call(this,this.media,e)}return!s}return!1})),e(this,\"on\",((e,t)=>{fe.call(this,this.elements.container,e,t)})),e(this,\"once\",((e,t)=>{ye.call(this,this.elements.container,e,t)})),e(this,\"off\",((e,t)=>{be(this.elements.container,e,t)})),e(this,\"destroy\",((e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow=\"\",this.embed=null,t?(Object.keys(this.elements).length&&(te(this.elements.buttons.play),te(this.elements.captions),te(this.elements.controls),te(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),j(e)&&e()):(we.call(this),Le.cancelRequests.call(this),se(this.elements.original,this.elements.container),ve.call(this,this.elements.original,\"destroyed\",!0),j(e)&&e.call(this.elements.original),this.ready=!1,setTimeout((()=>{this.elements=null,this.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(at.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&j(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))})),e(this,\"supports\",(e=>me.mime.call(this,e))),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=me.touch,this.media=t,_(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||q(this.media)||D(this.media))&&(this.media=this.media[0]),this.config=X({},Qe,Tt.defaults,i||{},(()=>{try{return JSON.parse(this.media.getAttribute(\"data-plyr-config\"))}catch(e){return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new it(this.config.debug),this.debug.log(\"Config\",this.config),this.debug.log(\"Support\",me),I(this.media)||!H(this.media))return void this.debug.error(\"Setup failed: no suitable element passed\");if(this.media.plyr)return void this.debug.warn(\"Target already setup\");if(!this.config.enabled)return void this.debug.error(\"Setup failed: disabled by config\");if(!me.check().api)return void this.debug.error(\"Setup failed: no support\");const s=this.media.cloneNode(!0);s.autoplay=!1,this.elements.original=s;const n=this.media.tagName.toLowerCase();let a=null,l=null;switch(n){case\"div\":if(a=this.media.querySelector(\"iframe\"),H(a)){if(l=ze(a.getAttribute(\"src\")),this.provider=function(e){return/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(e)?Ge.youtube:/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(e)?Ge.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className=\"\",l.search.length){const e=[\"1\",\"true\"];e.includes(l.searchParams.get(\"autoplay\"))&&(this.config.autoplay=!0),e.includes(l.searchParams.get(\"loop\"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(l.searchParams.get(\"playsinline\")),this.config.youtube.hl=l.searchParams.get(\"hl\")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(W(this.provider)||!Object.values(Ge).includes(this.provider))return void this.debug.error(\"Setup failed: Invalid provider\");this.type=et;break;case\"video\":case\"audio\":this.type=n,this.provider=Ge.html5,this.media.hasAttribute(\"crossorigin\")&&(this.config.crossorigin=!0),this.media.hasAttribute(\"autoplay\")&&(this.config.autoplay=!0),(this.media.hasAttribute(\"playsinline\")||this.media.hasAttribute(\"webkit-playsinline\"))&&(this.config.playsinline=!0),this.media.hasAttribute(\"muted\")&&(this.config.muted=!0),this.media.hasAttribute(\"loop\")&&(this.config.loop.active=!0);break;default:return void this.debug.error(\"Setup failed: unsupported type\")}this.supported=me.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new lt(this),this.storage=new Re(this),this.media.plyr=this,H(this.elements.container)||(this.elements.container=Z(\"div\",{tabindex:0}),J(this.media,this.elements.container)),at.migrateStyles.call(this),at.addStyleHook.call(this),pt.setup.call(this),this.config.debug&&fe.call(this,this.elements.container,this.config.events.join(\" \"),(e=>{this.debug.log(`event: ${e.type}`)})),this.fullscreen=new st(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&at.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new gt(this)),this.isHTML5&&this.config.autoplay&&this.once(\"canplay\",(()=>ke(this.play()))),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new vt(this))):this.debug.error(\"Setup failed: no support\")}get isHTML5(){return this.provider===Ge.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===Ge.youtube}get isVimeo(){return this.provider===Ge.vimeo}get isVideo(){return this.type===et}get isAudio(){return this.type===Ze}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=$(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return $(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=parseFloat(this.config.duration),t=(this.media||{}).duration,i=$(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;_(t)&&(t=Number(t)),$(t)||(t=this.storage.get(\"volume\")),$(t)||({volume:t}=this.config),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!W(e)&&this.muted&&t>0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;O(t)||(t=this.storage.get(\"muted\")),O(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;$(e)&&(t=e),$(t)||(t=this.storage.get(\"speed\")),$(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=ft(t,i,s),this.config.speed.selected=t,setTimeout((()=>{this.media&&(this.media.playbackRate=t)}),0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!W(e)&&Number(e),this.storage.get(\"quality\"),t.selected,t.default].find($),n=!0;if(!i.includes(s)){const e=Ae(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=O(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){wt.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return U(e)?e:this.source}set download(e){U(e)&&(this.config.urls.download=e,We.setDownloadUrl.call(this))}set poster(e){this.isVideo?at.setPoster.call(this,e,!1).catch((()=>{})):this.debug.warn(\"Poster can only be set for video\")}get poster(){return this.isVideo?this.media.getAttribute(\"poster\")||this.media.getAttribute(\"data-poster\"):null}get ratio(){if(!this.isVideo)return null;const e=Me(Ne.call(this));return D(e)?e.join(\":\"):e}set ratio(e){this.isVideo?_(e)&&Pe(e)?(this.config.ratio=Me(e),xe.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn(\"Aspect ratio can only be set for video\")}set autoplay(e){this.config.autoplay=O(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){Ye.toggle.call(this,e,!1)}set currentTrack(e){Ye.set.call(this,e,!1),Ye.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){Ye.setLanguage.call(this,e,!1)}get language(){return(Ye.getCurrentTrack.call(this)||{}).language}set pip(e){if(!me.pip)return;const t=O(e)?e:!this.pip;j(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Xe:Je),j(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return me.pip?W(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Xe:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new vt(this))}static supported(e,t,i){return me.check(e,t,i)}static loadSprite(e,t){return Ve(e,t)}static setup(e,t={}){let i=null;return _(e)?i=Array.from(document.querySelectorAll(e)):q(e)?i=Array.from(e):D(e)&&(i=e.filter(H)),W(i)?null:i.map((e=>new Tt(e,t)))}}var kt;return Tt.defaults=(kt=Qe,JSON.parse(JSON.stringify(kt))),Tt}));\n//# sourceMappingURL=plyr.min.js.map\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"RangeTouch\",t):(e=e||self).RangeTouch=t()}(this,(function(){\"use strict\";function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function r(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?n(Object(i),!0).forEach((function(n){t(e,n,i[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var i={addCSS:!0,thumbWidth:15,watch:!0};function u(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var o=function(e){return null!=e?e.constructor:null},c=function(e,t){return!!(e&&t&&e instanceof t)},l=function(e){return null==e},a=function(e){return o(e)===Object},s=function(e){return o(e)===String},f=function(e){return Array.isArray(e)},h=function(e){return c(e,NodeList)},d=s,y=f,b=h,m=function(e){return c(e,Element)},g=function(e){return c(e,Event)},p=function(e){return l(e)||(s(e)||f(e)||h(e))&&!e.length||a(e)&&!Object.keys(e).length};function v(e,t){if(1>t){var n=function(e){var t=\"\".concat(e).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}return function(){function t(e,n){(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")})(this,t),m(e)?this.element=e:d(e)&&(this.element=document.querySelector(e)),m(this.element)&&p(this.element.rangeTouch)&&(this.config=r({},i,{},n),this.init())}return n=t,c=[{key:\"setup\",value:function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},o=null;if(p(e)||d(e)?o=Array.from(document.querySelectorAll(d(e)?e:'input[type=\"range\"]')):m(e)?o=[e]:b(e)?o=Array.from(e):y(e)&&(o=e.filter(m)),p(o))return null;var c=r({},i,{},n);if(d(e)&&c.watch){var l=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){m(n)&&u(n,e)&&new t(n,c)}))}))}));l.observe(document.body,{childList:!0,subtree:!0})}return o.map((function(e){return new t(e,n)}))}},{key:\"enabled\",get:function(){return\"ontouchstart\"in document.documentElement}}],(o=[{key:\"init\",value:function(){t.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"none\",this.element.style.webKitUserSelect=\"none\",this.element.style.touchAction=\"manipulation\"),this.listeners(!0),this.element.rangeTouch=this)}},{key:\"destroy\",value:function(){t.enabled&&(this.config.addCSS&&(this.element.style.userSelect=\"\",this.element.style.webKitUserSelect=\"\",this.element.style.touchAction=\"\"),this.listeners(!1),this.element.rangeTouch=null)}},{key:\"listeners\",value:function(e){var t=this,n=e?\"addEventListener\":\"removeEventListener\";[\"touchstart\",\"touchmove\",\"touchend\"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:\"get\",value:function(e){if(!t.enabled||!g(e))return null;var n,r=e.target,i=e.changedTouches[0],u=parseFloat(r.getAttribute(\"min\"))||0,o=parseFloat(r.getAttribute(\"max\"))||100,c=parseFloat(r.getAttribute(\"step\"))||1,l=r.getBoundingClientRect(),a=100/l.width*(this.config.thumbWidth/2)/100;return 0>(n=100/l.width*(i.clientX-l.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*a:50<n&&(n+=2*(n-50)*a),u+v(n/100*(o-u),c)}},{key:\"set\",value:function(e){t.enabled&&g(e)&&!e.target.disabled&&(e.preventDefault(),e.target.value=this.get(e),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(e.target,\"touchend\"===e.type?\"change\":\"input\"))}}])&&e(n.prototype,o),c&&e(n,c),t;var n,o,c}()}));\n//# sourceMappingURL=rangetouch.js.map\n","(function(module) {\n 'use strict';\n\n module.exports.is_uri = is_iri;\n module.exports.is_http_uri = is_http_iri;\n module.exports.is_https_uri = is_https_iri;\n module.exports.is_web_uri = is_web_iri;\n // Create aliases\n module.exports.isUri = is_iri;\n module.exports.isHttpUri = is_http_iri;\n module.exports.isHttpsUri = is_https_iri;\n module.exports.isWebUri = is_web_iri;\n\n\n // private function\n // internal URI spitter method - direct from RFC 3986\n var splitUri = function(uri) {\n var splitted = uri.match(/(?:([^:\\/?#]+):)?(?:\\/\\/([^\\/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?/);\n return splitted;\n };\n\n function is_iri(value) {\n if (!value) {\n return;\n }\n\n // check for illegal characters\n if (/[^a-z0-9\\:\\/\\?\\#\\[\\]\\@\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=\\.\\-\\_\\~\\%]/i.test(value)) return;\n\n // check for hex escapes that aren't complete\n if (/%[^0-9a-f]/i.test(value)) return;\n if (/%[0-9a-f](:?[^0-9a-f]|$)/i.test(value)) return;\n\n var splitted = [];\n var scheme = '';\n var authority = '';\n var path = '';\n var query = '';\n var fragment = '';\n var out = '';\n\n // from RFC 3986\n splitted = splitUri(value);\n scheme = splitted[1]; \n authority = splitted[2];\n path = splitted[3];\n query = splitted[4];\n fragment = splitted[5];\n\n // scheme and path are required, though the path can be empty\n if (!(scheme && scheme.length && path.length >= 0)) return;\n\n // if authority is present, the path must be empty or begin with a /\n if (authority && authority.length) {\n if (!(path.length === 0 || /^\\//.test(path))) return;\n } else {\n // if authority is not present, the path must not start with //\n if (/^\\/\\//.test(path)) return;\n }\n\n // scheme must begin with a letter, then consist of letters, digits, +, ., or -\n if (!/^[a-z][a-z0-9\\+\\-\\.]*$/.test(scheme.toLowerCase())) return;\n\n // re-assemble the URL per section 5.3 in RFC 3986\n out += scheme + ':';\n if (authority && authority.length) {\n out += '//' + authority;\n }\n\n out += path;\n\n if (query && query.length) {\n out += '?' + query;\n }\n\n if (fragment && fragment.length) {\n out += '#' + fragment;\n }\n\n return out;\n }\n\n function is_http_iri(value, allowHttps) {\n if (!is_iri(value)) {\n return;\n }\n\n var splitted = [];\n var scheme = '';\n var authority = '';\n var path = '';\n var port = '';\n var query = '';\n var fragment = '';\n var out = '';\n\n // from RFC 3986\n splitted = splitUri(value);\n scheme = splitted[1]; \n authority = splitted[2];\n path = splitted[3];\n query = splitted[4];\n fragment = splitted[5];\n\n if (!scheme) return;\n\n if(allowHttps) {\n if (scheme.toLowerCase() != 'https') return;\n } else {\n if (scheme.toLowerCase() != 'http') return;\n }\n\n // fully-qualified URIs must have an authority section that is\n // a valid host\n if (!authority) {\n return;\n }\n\n // enable port component\n if (/:(\\d+)$/.test(authority)) {\n port = authority.match(/:(\\d+)$/)[0];\n authority = authority.replace(/:\\d+$/, '');\n }\n\n out += scheme + ':';\n out += '//' + authority;\n \n if (port) {\n out += port;\n }\n \n out += path;\n \n if(query && query.length){\n out += '?' + query;\n }\n\n if(fragment && fragment.length){\n out += '#' + fragment;\n }\n \n return out;\n }\n\n function is_https_iri(value) {\n return is_http_iri(value, true);\n }\n\n function is_web_iri(value) {\n return (is_http_iri(value) || is_https_iri(value));\n }\n\n})(module);\n","var map = {\n\t\"./arrow-down.svg\": 6785,\n\t\"./arrow-left.svg\": 5591,\n\t\"./chevron-down-full.svg\": 483,\n\t\"./chevron-down.svg\": 6907,\n\t\"./chevron-up-full.svg\": 6735,\n\t\"./chevron-up.svg\": 5713,\n\t\"./close.svg\": 1424,\n\t\"./compass.svg\": 5359,\n\t\"./external-link.svg\": 32,\n\t\"./facebook.svg\": 1978,\n\t\"./fast-backward.svg\": 3621,\n\t\"./fast-forward.svg\": 4239,\n\t\"./file-text.svg\": 1553,\n\t\"./home.svg\": 8322,\n\t\"./logo-big.png\": 4755,\n\t\"./logo.png\": 971,\n\t\"./maximize.svg\": 29,\n\t\"./mini-player.svg\": 2536,\n\t\"./minimize.svg\": 2529,\n\t\"./more-vertical.svg\": 5352,\n\t\"./mute.svg\": 6205,\n\t\"./pause.svg\": 1935,\n\t\"./play.svg\": 9321,\n\t\"./search.svg\": 4682,\n\t\"./settings.svg\": 9608,\n\t\"./share.svg\": 735,\n\t\"./skip-backward.svg\": 5862,\n\t\"./skip-forward.svg\": 6707,\n\t\"./speed-1-5.svg\": 366,\n\t\"./speed-1.svg\": 9852,\n\t\"./speed-2.svg\": 7270,\n\t\"./subtitles.svg\": 2614,\n\t\"./twitter.svg\": 4576,\n\t\"./university.svg\": 1939,\n\t\"./user.svg\": 6895,\n\t\"./volume-1.svg\": 3132,\n\t\"./volume-2.svg\": 9265,\n\t\"./volume-3.svg\": 5929\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3991;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import Plyr, {PlyrEvent} from \"plyr\";\nimport {defaultType, plyr} from \"../../global/types/ModuleTypes\";\nimport {LTPlayer} from \"../LTPlayerType\";\n\nexport class LTPlayerChapters {\n /**\n * Player instance\n * @private\n */\n player: LTPlayer.PortraitType | LTPlayer.LandscapeType\n /**\n * LTPlayerChapters array list\n * @private\n */\n chapters: Array<any>\n\n /**\n * The first Element from chapters array\n * @private\n */\n firstChapter: defaultType\n /**\n * The last Element from chapters array\n * @private\n */\n lastChapter: defaultType;\n\n /**\n * Player instance current time\n * @private\n */\n currentTime: number\n\n /**\n * Set chapters events and functionality\n * @param chapters\n */\n constructor(chapters: Array<any>) {\n this.chapters = chapters;\n this.setupInitChapter();\n }\n\n setupInitChapter() {\n if (this.chapters.length !== 0) {\n this.lastChapter = this.chapters[this.chapters.length - 1];\n this.firstChapter = this.chapters[0];\n }\n }\n\n /**\n * Init chapters setup\n */\n updateCurrentTimeAndTitle(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, event: PlyrEvent) {\n\n this.player = instance;\n\n const eventPlayer = event.detail.plyr as plyr\n\n if (eventPlayer.id !== (instance.plyr as plyr).id) {\n return;\n }\n\n instance.playerControl.chaptersService.currentTime = eventPlayer.currentTime;\n\n if (instance.plyr.paused) {\n instance.playerControl.chaptersService.currentTime += 0.1;\n }\n\n let chapters = instance.playerControl.chaptersService.findChapter(instance.playerControl.chaptersService.currentTime, instance.playerControl.chaptersService.chapters)\n\n if (chapters !== undefined) {\n instance.playerControl.chaptersService.setChapterPreviousNext(chapters[2], chapters[0]);\n instance.playerControl.chaptersService.setTitleChapterName(chapters[1]);\n instance.playerControl.chaptersService.setButtonsChapterTime(chapters[0], chapters[2])\n }\n }\n\n /**\n * Set skip-backward and skip-forward event\n */\n setButtonsEvents(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n this.player = instance;\n let player = instance.plyr;\n let playerControlsContainer = instance.plyr.elements.controls;\n\n const leftButton: HTMLElement = playerControlsContainer.querySelector('.skip-backward');\n const rightButton: HTMLElement = playerControlsContainer.querySelector('.skip-forward');\n\n leftButton.addEventListener('click', function (event) {\n event.preventDefault();\n if (leftButton.dataset.ltPlayerChaptertimestamp === \"false\") {\n return;\n }\n if (leftButton.dataset.ltPlayerChaptertimestamp) {\n player.currentTime = parseFloat(leftButton.dataset.ltPlayerChaptertimestamp);\n }\n })\n\n rightButton.addEventListener('click', function (event) {\n\n event.preventDefault();\n\n if (instance.playerControl.chaptersService.currentTime > instance.playerControl.chaptersService.lastChapter.timestamp) {\n\n player.stop();\n const playerContainer = player.elements.container;\n\n const customPoster = playerContainer.querySelector('.lt-player__poster');\n const controls = playerContainer.querySelector('.plyr__controls');\n\n playerContainer.classList.add('plyr--stopped')\n customPoster.classList.remove('d-none');\n controls.classList.add('d-none');\n return;\n }\n\n if (rightButton.dataset.ltPlayerChaptertimestamp) {\n player.currentTime = parseFloat(rightButton.dataset.ltPlayerChaptertimestamp);\n }\n\n })\n }\n\n setMobileButtonEvents(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n this.player = instance;\n let player = instance.plyr;\n let playerControlsContainer = instance.plyr.elements.controls;\n\n const leftButton: HTMLElement = playerControlsContainer.querySelector('.skip-backward');\n const rightButton: HTMLElement = playerControlsContainer.querySelector('.skip-forward');\n\n if (leftButton) {\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(leftButton);\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileChaptersLeftButton(event) {\n event.preventDefault();\n if (leftButton.dataset.ltPlayerChaptertimestamp === \"false\") {\n return;\n }\n if (leftButton.dataset.ltPlayerChaptertimestamp) {\n player.currentTime = parseFloat(leftButton.dataset.ltPlayerChaptertimestamp);\n }\n })\n }\n }\n\n if (rightButton) {\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(rightButton);\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileChaptersLeftButton(event) {\n event.preventDefault();\n\n if (instance.playerControl.chaptersService.currentTime > instance.playerControl.chaptersService.lastChapter.timestamp) {\n\n player.stop();\n const playerContainer = player.elements.container;\n\n const customPoster = playerContainer.querySelector('.lt-player__poster');\n const controls = playerContainer.querySelector('.plyr__controls');\n\n playerContainer.classList.add('plyr--stopped')\n customPoster.classList.remove('d-none');\n controls.classList.add('d-none');\n return;\n }\n\n if (rightButton.dataset.ltPlayerChaptertimestamp) {\n player.currentTime = parseFloat(rightButton.dataset.ltPlayerChaptertimestamp);\n }\n })\n }\n }\n }\n\n /**\n * Add button data attribute [dataset.ltPlayerChaptertimestamp]\n * @param left\n * @param right\n */\n setButtonsChapterTime(left: defaultType|null, right:defaultType|null) {\n\n const playerControlsContainer = this.player.plyr.elements.controls;\n\n const leftButton: HTMLElement = playerControlsContainer.querySelector('.skip-backward');\n\n leftButton.dataset.ltPlayerChaptertimestamp = String(false);\n\n if (left !== null) {\n leftButton.dataset.ltPlayerChaptertimestamp = left.timestamp;\n }\n\n const rightButton: HTMLElement = playerControlsContainer.querySelector('.skip-forward');\n\n if (right !== null) {\n rightButton.dataset.ltPlayerChaptertimestamp = right.timestamp;\n }\n\n }\n\n setChapterPreviousNext(nextChapter: defaultType, previousChapter: defaultType) {\n const playerControlsContainer = this.player.plyr.elements.controls;\n const previous = playerControlsContainer.querySelector('.bottom-controller__previous-chapter-view');\n const next = playerControlsContainer.querySelector('.bottom-controller__next-chapter-view');\n if (next) {\n next.innerHTML = '';\n if (nextChapter) {\n next.innerHTML = nextChapter.name;\n }\n }\n\n if (previous) {\n previous.innerHTML = '';\n if (previousChapter) {\n previous.innerHTML = previousChapter.name;\n }\n }\n }\n\n /**\n * Set Chapter Title name\n * @param chapter\n */\n setTitleChapterName(chapter: defaultType) {\n const playerControlsContainer = this.player.plyr.elements.controls;\n const topControllersContainer = playerControlsContainer.querySelector('.top-controllers__body__center');\n const chapterTitleSelector = topControllersContainer.getElementsByTagName('p')[0];\n if (chapter) {\n chapterTitleSelector.innerHTML = chapter.name;\n } else {\n chapterTitleSelector.innerHTML = '';\n }\n }\n\n /**\n * Find LTPlayerChapters\n * @param time\n * @param state\n */\n findChapter(time: number, state: Array<any>) {\n\n let current: null;\n let left: null;\n let right = null;\n\n const findPrevious = (state: defaultType, elementIndex: number) => {\n if (elementIndex === null) {\n return null;\n }\n\n return state[elementIndex - 2] || null;\n }\n\n const findCurrent = (state: defaultType, elementIndex: number) => {\n if (elementIndex === null) {\n return null;\n }\n return state[elementIndex - 1] ||null;\n }\n\n for (let index = 0; index < state.length; index += 1) {\n let element = state[index];\n if (element.timestamp >= time) {\n right = element;\n current = findCurrent(state, index);\n left = findPrevious(state, index);\n return [left, current, right]\n }\n }\n\n current = state[state.length - 1];\n left = state[state.length - 2];\n\n return [left, current, right]\n }\n}\n","import {LTPlayer} from \"../../LTPlayerType\";\n\nexport class LTPlayerCommonSettingsControllers {\n\n instance: LTPlayer.PortraitType | LTPlayer.LandscapeType\n\n constructor(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n this.instance = instance;\n }\n\n addSettingsTemplate(string: 'mobile' | 'desktop') {\n const settingsTemplate = this.instance.templateService.getSettings({id : this.instance.playerConfig.getPlayerId(), [string] : true});\n const lastElement = this.instance.plyr.elements.controls.lastElementChild;\n\n if (lastElement) {\n lastElement.insertAdjacentHTML(\"afterend\", settingsTemplate);\n }\n }\n\n openSettings() {\n if (!this.getSelectors().playerControlsContainer.classList.contains('plyr__controls-enable-settings')) {\n this.getSelectors().playerControlsContainer.classList.add('plyr__controls-enable-settings');\n }\n\n if (!this.getSelectors().settingsContainer.classList.contains('settings-controllers-enable')) {\n this.getSelectors().settingsContainer.classList.add('settings-controllers-enable');\n\n if (this.getSelectors().background.classList.contains('d-none')) {\n this.getSelectors().background.classList.remove('d-none');\n }\n }\n }\n\n getSelectors() {\n return {\n playerControlsContainer : this.instance.plyr.elements.controls,\n settingsContainer : this.instance.plyr.elements.controls.querySelector('.settings-controllers'),\n background : this.instance.plyr.elements.controls.querySelector('.settings-controllers-enable__background'),\n button : this.instance.plyr.elements.controls.querySelector('.plyr__controls_settings-button'),\n saveButton : this.instance.plyr.elements.controls.querySelector('.button-save'),\n playerContainer : this.instance.plyr.elements.container\n }\n }\n\n closeSettings() {\n const settingsBody = this.getSelectors().playerControlsContainer.querySelector('.settings-controllers');\n\n if (settingsBody.classList.contains('settings-controllers-enable')) {\n\n const settingsBody = this.getSelectors().playerControlsContainer.querySelector('.settings-controllers');\n this.getSelectors().playerControlsContainer.classList.remove('plyr__controls-enable-settings');\n settingsBody.classList.remove('settings-controllers-enable');\n\n const background = this.getSelectors().playerContainer.querySelector('.settings-controllers-enable__background');\n\n if (!background.classList.contains('d-none')) {\n background.classList.add('d-none');\n }\n\n }\n }\n\n}\n","import {LTPlayerSettingsControlsManager} from \"../LTPlayerSettingsControlsManager\";\nimport {SettingsControlsInterfaces} from \"../../../global/interfaces/SettingsControlsInterfaces\";\nimport {defaultType} from \"../../../global/types/ModuleTypes\";\n\nexport class LTPlayerMobileSettingsControllers implements SettingsControlsInterfaces {\n settingsInstance: LTPlayerSettingsControlsManager\n constructor(settingsInstance: LTPlayerSettingsControlsManager) {\n this.settingsInstance = settingsInstance;\n this.init();\n }\n\n init() {\n this.settingsInstance.common.addSettingsTemplate(this.settingsInstance.playerInstance.playerConfig.getDevice());\n this.setDefaultSpeed();\n this.setButtonSpeed();\n }\n\n setDefaultSpeed() {\n this.settingsInstance.playerInstance.plyr.speed = 1;\n }\n\n setButtonSpeed() {\n let playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;\n let playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');\n playerSpeedButton.innerHTML = `${this.settingsInstance.playerInstance.plyr.speed}`;\n let plyr = this.settingsInstance.playerInstance.plyr;\n\n if (playerSpeedButton) {\n let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(playerSpeedButton);\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileSpeedButton() {\n\n let playSpeed = plyr.speed + 0.25;\n\n if (playSpeed > 2) {\n playerSpeedButton.innerHTML = '1';\n plyr.speed = 1;\n return;\n }\n\n if (playSpeed === 1.75) {\n plyr.speed = playSpeed + 0.25\n playerSpeedButton.innerHTML = `${playSpeed + 0.25}`;\n return;\n }\n\n plyr.speed = playSpeed;\n playerSpeedButton.innerHTML = `${playSpeed}`;\n\n })\n }\n }\n }\n\n}\n","import {LTPlayerSettingsControlsManager} from \"../LTPlayerSettingsControlsManager\";\nimport {SettingsControlsInterfaces} from \"../../../global/interfaces/SettingsControlsInterfaces\";\nimport {defaultType} from \"../../../global/types/ModuleTypes\";\n\nexport class LTPlayerDesktopSettingsControllers implements SettingsControlsInterfaces {\n settingsInstance: LTPlayerSettingsControlsManager\n constructor(settingsInstance: LTPlayerSettingsControlsManager) {\n this.settingsInstance = settingsInstance;\n this.init();\n }\n\n init() {\n this.settingsInstance.common.addSettingsTemplate(this.settingsInstance.playerInstance.playerConfig.getDevice());\n this.addOpenSettingsEventButton();\n this.initCaptionsEvent();\n this.initSpeedVideoEvent();\n this.initSaveButton();\n }\n\n addOpenSettingsEventButton() {\n\n const selectors: defaultType = this.settingsInstance.common.getSelectors();\n\n selectors.button.addEventListener('click', (event: MouseEvent) => {\n event.preventDefault();\n this.settingsInstance.common.openSettings();\n })\n }\n\n initCaptionsEvent() {\n\n const selectors = this.settingsInstance.common.getSelectors();\n\n const checkBox = selectors.playerControlsContainer.querySelector(`#captions-lt-player-${this.settingsInstance.playerInstance.playerConfig.getPlayerId()}`) as HTMLInputElement;\n\n if (checkBox) {\n checkBox.addEventListener('change', () => {\n\n if (!checkBox.checked) {\n this.settingsInstance.player.toggleCaptions(false);\n return\n }\n\n this.settingsInstance.player.toggleCaptions(true);\n\n })\n }\n }\n\n initSpeedVideoEvent() {\n const playerInstance = this.settingsInstance.playerInstance;\n const playerControlsContainer = this.settingsInstance.player.elements.controls;\n const player = this.settingsInstance.player;\n const rangeInput: HTMLInputElement = playerControlsContainer.querySelector('.speed-range-input');\n\n\n const myRange: HTMLInputElement = playerControlsContainer.querySelector(`#speed-range-${playerInstance.playerConfig.getPlayerId()}`);\n\n myRange.value = String(0);\n\n const myValue: HTMLElement = playerControlsContainer.querySelector(`#speed-range-value-${playerInstance.playerConfig.getPlayerId()}`);\n\n myValue.style.top = \"-20px\";\n\n let values:any = [1,1.25,1.50,2];\n\n myRange.oninput = function() {\n\n player.speed = parseInt(values[rangeInput.value]);\n\n myValue.innerHTML = values[rangeInput.value] + 'x';\n };\n\n player.speed = parseInt(String(values[0]));\n myValue.innerHTML = values[0] + 'x';\n }\n initSaveButton() {\n\n const selectors = this.settingsInstance.common.getSelectors();\n const instance = this;\n\n const saveButton = selectors.playerControlsContainer.querySelector('.button-save');\n\n saveButton.addEventListener('click', function (event) {\n event.preventDefault();\n instance.settingsInstance.common.closeSettings();\n })\n }\n\n}\n","import Plyr from \"plyr\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {plyr} from \"../../global/types/ModuleTypes\";\nimport {LTPlayer} from \"../LTPlayerType\";\nimport {LTPlayerCommonSettingsControllers} from \"./settings/LTPlayerCommonSettingsControllers\";\nimport {LTPlayerMobileSettingsControllers} from \"./settings/LTPlayerMobileSettingsControllers\";\nimport {LTPlayerDesktopSettingsControllers} from \"./settings/LTPlayerDesktopSettingsControllers\";\n\nexport class LTPlayerSettingsControlsManager {\n playerInstance: LTPlayer.PortraitType | LTPlayer.LandscapeType\n player: Plyr\n templateService: TemplateService\n playerID: number\n common: LTPlayerCommonSettingsControllers\n mobile: LTPlayerMobileSettingsControllers\n desktop: LTPlayerDesktopSettingsControllers\n\n init(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n this.playerInstance = instance;\n this.player = instance.plyr;\n this.templateService = instance.templateService;\n this.common = new LTPlayerCommonSettingsControllers(instance);\n const playerType = this.player as plyr;\n this.playerID = playerType.id;\n\n if (instance.playerConfig.getDevice() === 'mobile') {\n this.mobile = new LTPlayerMobileSettingsControllers(this);\n } else {\n this.desktop = new LTPlayerDesktopSettingsControllers(this);\n }\n\n }\n static closeSettingsEvent(event: MouseEvent) {\n\n const playerControlsContainer: NodeListOf<Element> = document.querySelectorAll('.plyr__controls');\n\n if (playerControlsContainer.length === 0) {\n return;\n }\n\n playerControlsContainer.forEach( control => {\n if (control.classList.contains('plyr__controls-enable-settings')) {\n const settingsBody = control.querySelector('.settings-controllers');\n\n if (!(event.target as HTMLTextAreaElement).classList.contains('settings') && settingsBody.classList.contains('settings-controllers-enable')) {\n const settingsBody = control.querySelector('.settings-controllers');\n\n control.classList.remove('plyr__controls-enable-settings');\n settingsBody.classList.remove('settings-controllers-enable');\n\n const background = control.querySelector('.settings-controllers-enable__background');\n\n if (!background.classList.contains('d-none')) {\n background.classList.add('d-none');\n }\n }\n }\n })\n }\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {plyr} from \"../../global/types/ModuleTypes\";\n\n\nexport namespace LTPlayerControlsEvents {\n\n export class Common {\n\n backwardRewind = {\n\n getSelectors(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n return {\n playerContainer: instance.plyr.elements.container,\n playerControlsContainer: instance.plyr.elements.controls,\n forwardArea: instance.plyr.elements.controls.querySelector('.lt-player-forward-area'),\n rewindArea: instance.plyr.elements.controls.querySelector('.lt-player-rewind-area'),\n forwardAnimation: instance.plyr.elements.controls.querySelector('.lt-player-forward'),\n rewindAnimation: instance.plyr.elements.controls.querySelector('.lt-player-rewind')\n };\n },\n\n updateCurrentTime(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType ,time: number) {\n if (Math.sign(time)) {\n instance.plyr.currentTime += time;\n } else {\n instance.plyr.currentTime -= time;\n }\n },\n\n playPause(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n const playInfoIcon = instance.plyr.elements.controls.querySelector('.player-state__play-icon');\n const pauseInfoIcon = instance.plyr.elements.controls.querySelector('.player-state__pause-icon');\n const playerStateInfo = instance.plyr.elements.controls.querySelector('.player-state');\n\n const removeStateButtons = () => {\n setTimeout(() => {\n playerStateInfo.classList.remove('active');\n setTimeout(() => {\n playInfoIcon.classList.add('d-none');\n pauseInfoIcon.classList.add('d-none');\n }, 300)\n }, 300)\n\n }\n\n\n if (instance.plyr.playing) {\n pauseInfoIcon.classList.remove('d-none');\n playerStateInfo.classList.add('active');\n instance.plyr.togglePlay(false);\n removeStateButtons();\n } else {\n playInfoIcon.classList.remove('d-none');\n playerStateInfo.classList.add('active');\n instance.plyr.togglePlay(true);\n removeStateButtons();\n }\n },\n\n animateNotificationIn(selector: Element) {\n selector.classList.add('animate-in');\n },\n\n animateNotificationOut(selector: Element) {\n selector.classList.remove('animate-in');\n }\n }\n\n\n playPauseIconTimeUpdate(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n const player = instance.plyr;\n\n let playerContainer = player.elements.container;\n\n const playIcon = playerContainer.querySelector('.bottom-controller__play-icon');\n const pauseIcon = playerContainer.querySelector('.bottom-controller__pause-icon');\n\n\n if (player.playing) {\n playIcon.classList.add('d-none');\n pauseIcon.classList.remove('d-none');\n } else {\n pauseIcon.classList.add('d-none');\n playIcon.classList.remove('d-none');\n }\n }\n }\n\n export class Desktop {\n\n common: Common\n constructor() {\n this.common = new Common();\n }\n\n subtitles(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n const playerContainer = instance.plyr.elements.container;\n const playerControls = instance.plyr.elements.controls;\n const captions = playerContainer.querySelector('.plyr__captions');\n\n let checkCaptions = (instance.plyr as plyr).captions.active;\n\n if (!checkCaptions) {\n return;\n }\n\n if (!captions) {\n return;\n }\n\n\n if (!playerControls.classList.contains('plyr__controls-enable')) {\n captions.classList.remove('on-controls-hover');\n return;\n }\n\n captions.classList.add('on-controls-hover');\n\n }\n showHide(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n const controls = instance.plyr.elements.controls;\n controls.addEventListener('mouseover', function () {\n controls.classList.add('plyr__controls-enable')\n })\n\n\n controls.addEventListener('mouseleave', function () {\n controls.classList.remove('plyr__controls-enable')\n })\n }\n\n fullScreenButtons(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n let playerControlsSelector = instance.plyr.elements.controls;\n\n const fullScreenButtonContainer = playerControlsSelector.querySelector('.fullscreen-custom-control');\n\n if (fullScreenButtonContainer) {\n fullScreenButtonContainer.addEventListener('click', function LTPlayerFullScreenDesk(event) {\n event.preventDefault();\n instance.plyr.fullscreen.toggle();\n })\n }\n\n }\n\n fullscreenIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string){\n\n let playerControls = instance.plyr.elements.controls;\n const fullScreenButtonContainer = playerControls.querySelector('.fullscreen-custom-control');\n\n switch (type) {\n case 'enterfullscreen':\n fullScreenButtonContainer.querySelector('.maximize').classList.add('d-none');\n fullScreenButtonContainer.querySelector('.minimize').classList.remove('d-none');\n playerControls.classList.add('progress-width-mobile');\n break\n case 'exitfullscreen':\n fullScreenButtonContainer.querySelector('.maximize').classList.remove('d-none');\n fullScreenButtonContainer.querySelector('.minimize').classList.add('d-none');\n playerControls.classList.remove('progress-width-mobile');\n break\n }\n }\n\n playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {\n switch (type) {\n case 'timeupdate':\n this.common.playPauseIconTimeUpdate(instance);\n }\n }\n\n backwardForward(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n let common = this.common;\n const selectors = common.backwardRewind.getSelectors(instance);\n\n if (selectors.forwardArea) {\n selectors.forwardArea.addEventListener('dblclick', function LTPlayerForwardDbClick(event) {\n event.preventDefault();\n common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);\n common.backwardRewind.updateCurrentTime(instance, 10);\n setTimeout(() => {\n common.backwardRewind.animateNotificationOut(selectors.forwardAnimation)\n }, 500)\n })\n\n selectors.forwardArea.addEventListener('click', function LTPlayerForwardClick(event) {\n event.preventDefault();\n const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');\n\n if (volumeControlArea) {\n if (!volumeControlArea.classList.contains('volume-control-enable')) {\n common.backwardRewind.playPause(instance);\n }\n }\n\n })\n }\n\n if (selectors.rewindArea) {\n\n selectors.rewindArea.addEventListener('dblclick', function LTPlayerRewindDbClick(event) {\n event.preventDefault();\n common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);\n common.backwardRewind.updateCurrentTime(instance, -10);\n setTimeout(() => {\n common.backwardRewind.animateNotificationOut(selectors.rewindAnimation)\n }, 500)\n })\n\n selectors.rewindArea.addEventListener('click', function LTPlayerRewindClick(event) {\n event.preventDefault();\n const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');\n\n if (volumeControlArea) {\n if (!volumeControlArea.classList.contains('volume-control-enable')) {\n common.backwardRewind.playPause(instance);\n }\n }\n })\n\n }\n }\n\n backwardForwardSeconds(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n let playerControlsContainer = instance.plyr.elements.controls;\n let forward = playerControlsContainer.querySelector('.skip-forward-seconds');\n let backward = playerControlsContainer.querySelector('.skip-backward-seconds');\n\n\n if (forward) {\n forward.addEventListener('click', function LTPlayerForwardSeconds(event) {\n event.preventDefault();\n instance.plyr.currentTime += 10;\n })\n }\n\n if (backward) {\n backward.addEventListener('click', function LTPlayerBackwardSeconds(event) {\n event.preventDefault();\n instance.plyr.currentTime -= 10;\n })\n }\n\n\n }\n\n\n volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n let playerControlsContainer = instance.plyr.elements.controls;\n\n\n const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');\n const openVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button');\n const closeVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button-close');\n const volumeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area');\n const volumeBackground: HTMLElement = playerControlsContainer.querySelector('.volume_control__background');\n const volumeRangeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area__range');\n\n playerControlsContainer.addEventListener('click', function (event) {\n const eventTarget = event.target as Element;\n\n if (eventTarget.classList.contains('subtitles-body__input-switch')) {\n return;\n }\n\n if (!volume.classList.contains('volume-control-enable')) {\n if (!eventTarget.classList.contains('button-open')) {\n return;\n }\n }\n\n if (\n !eventTarget.classList.contains('button-close') &&\n !eventTarget.classList.contains('volume-area-open')\n ) {\n if (!volume.classList.contains('volume-control-enable')) {\n volumeControl.classList.remove('d-none');\n volumeBackground.classList.remove('d-none');\n openVolumeButton.classList.add('d-none');\n volume.classList.add('volume-control-enable');\n volume.classList.add('volume-area-open')\n } else {\n volumeControl.classList.add('d-none');\n volumeBackground.classList.add('d-none');\n openVolumeButton.classList.remove('d-none');\n volume.classList.remove('volume-control-enable');\n }\n }\n event.preventDefault();\n })\n\n closeVolumeButton.addEventListener('click', (event) => {\n event.preventDefault();\n if (instance.plyr.volume > 0) {\n instance.playerControl.playerVolumeBefore = instance.plyr.volume;\n instance.plyr.volume = 0;\n volumeIcons(0);\n return;\n }\n\n if (instance.playerControl.playerVolumeBefore) {\n instance.plyr.volume = instance.playerControl.playerVolumeBefore;\n volumeIcons(instance.playerControl.playerVolumeBefore);\n return;\n }\n\n instance.plyr.volume = 1;\n volumeIcons(1)\n })\n\n const volumeIcons = (range: any) => {\n\n if (typeof range == 'number') {\n range = range.toString()\n }\n\n const volumeMax: HTMLElement = closeVolumeButton.querySelector('.volume-max');\n const volume75: HTMLElement = closeVolumeButton.querySelector('.volume-75');\n const volume50: HTMLElement = closeVolumeButton.querySelector('.volume-50');\n const volumeMute: HTMLElement = closeVolumeButton.querySelector('.volume-mute');\n const volumeBody: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');\n\n const volumeIconsManger = (item: HTMLElement) => {\n\n const rangeVolumesItems: NodeListOf<HTMLElement>= volumeBody.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');\n\n rangeVolumesItems.forEach(function (value) {\n if (item.dataset.rangeValue === value.dataset.rangeValue){\n value.classList.remove('d-none');\n } else {\n value.classList.add('d-none')\n }\n })\n }\n\n switch (range) {\n case volumeMax.dataset.rangeValue :\n volumeIconsManger(volumeMax);\n break;\n case volume75.dataset.rangeValue :\n volumeIconsManger(volume75);\n break;\n case volume50.dataset.rangeValue :\n volumeIconsManger(volume50);\n break;\n case volumeMute.dataset.rangeValue :\n volumeIconsManger(volumeMute);\n break;\n }\n }\n\n volumeRangeControl.addEventListener('input', function () {\n volumeIcons((volumeRangeControl as HTMLInputElement).value);\n })\n\n instance.plyr.volume = 1;\n\n volumeIcons(instance.plyr.volume)\n }\n }\n\n export class Mobile {\n\n common: Common\n\n controlsTimeOut: NodeJS.Timeout\n\n constructor() {\n this.common = new Common();\n }\n seekBar(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerControlsContainer = instance.plyr.elements.controls;\n const seekBar = playerControlsContainer.querySelector('.plyr__progress__seek');\n const rangeTouch = require('rangetouch');\n rangeTouch.setup(seekBar);\n }\n\n controlsTimeShow(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerContainer = instance.plyr.elements.container;\n const playerControlsContainer = instance.plyr.elements.controls;\n const __this = this;\n\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerControlsContainer);\n\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileFullScreen() {\n\n if (!playerContainer.classList.contains('plyr__controls-enable')) {\n __this.showControls(instance);\n }\n })\n }\n\n }\n\n removePlyrControlsClass(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerContainer = instance.plyr.elements.container;\n const playerControlsContainer = instance.plyr.elements.controls;\n\n if (playerControlsContainer.classList.contains('plyr__controls-enable')) {\n playerContainer.classList.remove('plyr--hide-controls');\n }\n\n }\n\n\n showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n const playerContainer = instance.plyr.elements.container;\n const playerControlsContainer = instance.plyr.elements.controls;\n\n playerContainer.classList.remove('plyr--hide-controls');\n\n if (!playerControlsContainer.classList.contains('plyr__controls-enable')) {\n playerControlsContainer.classList.add('plyr__controls-enable');\n }\n\n if (this.controlsTimeOut) {\n clearTimeout(this.controlsTimeOut);\n }\n\n this.hideControls(instance);\n }\n\n hideControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerContainer = instance.plyr.elements.container;\n const playerControlsContainer = instance.plyr.elements.controls;\n this.controlsTimeOut = setTimeout(() => {\n playerControlsContainer.classList.remove('plyr__controls-enable');\n playerContainer.classList.add('plyr--hide-controls');\n }, 4000);\n\n }\n\n fullScreenButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n let playerControlsSelector = instance.plyr.elements.controls;\n\n const fullScreenButtonContainer = playerControlsSelector.querySelector('.fullscreen-custom-control');\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(fullScreenButtonContainer);\n\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileFullScreen() {\n instance.plyr.fullscreen.toggle();\n })\n }\n }\n playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {\n\n let common = this.common;\n\n switch (type) {\n case 'timeupdate':\n common.playPauseIconTimeUpdate(instance);\n break\n case 'ready':\n const playButton = instance.plyr.elements.container.querySelector('.play-button');\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playButton);\n if (mobileEvent && instance.plyr.isHTML5) {\n mobileEvent.on('singletap', function LTPlayerMobilePLayPauseIcon() {\n if (instance.plyr.playing) {\n instance.plyr.togglePlay(false);\n } else {\n instance.plyr.togglePlay(true);\n }\n common.playPauseIconTimeUpdate(instance);\n });\n }\n }\n }\n\n backwardForward(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n let common = this.common;\n const selectors = common.backwardRewind.getSelectors(instance);\n const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');\n\n const singleTapAction = () => {\n if (instance.plyr.elements.controls.classList.contains('plyr__controls-enable')) {\n if (volumeControlArea) {\n if (!volumeControlArea.classList.contains('volume-control-enable')) {\n common.backwardRewind.playPause(instance);\n instance.playerControl.mobileEvents.showControls(instance);\n }\n }\n }\n }\n\n if (selectors.forwardArea) {\n\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardArea);\n\n mobileEvent.on('doubletap', function LTPlayerMobileForwardDbClick() {\n common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);\n common.backwardRewind.updateCurrentTime(instance, 10);\n setTimeout(() => {\n common.backwardRewind.animateNotificationOut(selectors.forwardAnimation)\n }, 500)\n })\n\n mobileEvent.on('singletap', function LTPlayerMobileForwardDbClick() {\n singleTapAction();\n })\n }\n\n if (selectors.rewindArea) {\n\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindArea);\n\n mobileEvent.on('doubletap', function LTPlayerMobileRewindDbClick() {\n common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);\n common.backwardRewind.updateCurrentTime(instance, -10);\n setTimeout(() => {\n common.backwardRewind.animateNotificationOut(selectors.rewindAnimation)\n }, 500)\n })\n\n mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {\n singleTapAction();\n })\n\n }\n }\n\n\n backwardForwardSeconds(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n let playerControlsContainer = instance.plyr.elements.controls;\n let forward = playerControlsContainer.querySelector('.skip-forward-seconds');\n let backward = playerControlsContainer.querySelector('.skip-backward-seconds');\n\n if (forward) {\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(forward);\n\n mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {\n instance.plyr.currentTime += 10;\n })\n }\n\n if (backward) {\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(backward);\n mobileEvent.on('singletap', function LTPlayerBackwardSeconds() {\n instance.plyr.currentTime -= 10;\n })\n }\n }\n\n\n volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n let playerControlsContainer = instance.plyr.elements.controls;\n const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');\n const volumeButton = volume.querySelector('button');\n const volumeUp = volume.querySelector('.volume-max');\n const volumeMute = volume.querySelector('.volume-mute');\n\n const setVolumeIcon = (volumeState: string) => {\n if (volumeState === 'up') {\n volumeUp.classList.remove('d-none');\n volumeMute.classList.remove('d-none');\n volumeMute.classList.add('d-none');\n } else {\n volumeUp.classList.remove('d-none');\n volumeMute.classList.remove('d-none');\n volumeUp.classList.add('d-none');\n }\n }\n\n const setVolume = (): string => {\n if (instance.plyr.muted) {\n instance.plyr.muted = false;\n return 'up';\n } else {\n instance.plyr.muted = true;\n return 'mute';\n }\n }\n\n setVolumeIcon('up');\n\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);\n\n mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {\n let volumeState = setVolume();\n setVolumeIcon(volumeState);\n })\n\n }\n }\n\n\n\n}\n","import Plyr from \"plyr\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {LTPlayerConfig} from \"../LTPlayerConfig\";\nimport {IconsService} from \"../../services/IconsService\";\nimport {LTPlayerChapters} from \"./LTPlayerChapters\";\nimport {LTPlayerSettingsControlsManager} from \"./LTPlayerSettingsControlsManager\";\nimport {LTPlayerControlsEvents} from \"./LTPlayerControlsEvents\";\n\nexport class LTPlayerControls {\n\n templateService: TemplateService;\n playerVolumeBefore: number\n settingsControlsManager: LTPlayerSettingsControlsManager\n chaptersService : LTPlayerChapters\n desktopEvents: LTPlayerControlsEvents.Desktop;\n mobileEvents: LTPlayerControlsEvents.Mobile;\n\n /**\n * Generate Player LTPlayerControls to pass in Plyr\n * @param templateService\n */\n constructor(templateService: TemplateService) {\n this.settingsControlsManager = new LTPlayerSettingsControlsManager();\n this.templateService = templateService;\n this.setDesktopEvents();\n this.setMobileEvents();\n\n }\n\n setDesktopEvents() {\n this.desktopEvents = new LTPlayerControlsEvents.Desktop();\n }\n\n setMobileEvents() {\n this.mobileEvents = new LTPlayerControlsEvents.Mobile();\n }\n\n /**\n * Set player chapters\n * @param chapters\n */\n initChapters(chapters: Array<any>) {\n this.chaptersService = new LTPlayerChapters(chapters);\n }\n\n\n /**\n * Get LTPlayerControls Html\n * @param config\n * @param iconService\n */\n getControls(config: LTPlayerConfig, iconService: IconsService) {\n return this.templateService.getTemplateControls(config, iconService);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\nvar objectToString = Object.prototype.toString;\nvar isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n};\n\nfunction isFunction (object) {\n return typeof object === 'function';\n}\n\n/**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\nfunction typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n}\n\nfunction escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\nfunction hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n}\n\n/**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\nfunction primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n}\n\n// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n// See https://github.com/janl/mustache.js/issues/189\nvar regExpTest = RegExp.prototype.test;\nfunction testRegExp (re, string) {\n return regExpTest.call(re, string);\n}\n\nvar nonSpaceRe = /\\S/;\nfunction isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n}\n\nvar entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n};\n\nfunction escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n}\n\nvar whiteRe = /\\s*/;\nvar spaceRe = /\\s+/;\nvar equalsRe = /\\s*=/;\nvar curlyRe = /\\s*\\}/;\nvar tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n/**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\nfunction parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n}\n\n/**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\nfunction squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n}\n\n/**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\nfunction nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n}\n\n/**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\nfunction Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n}\n\n/**\n * Returns `true` if the tail is empty (end of string).\n */\nScanner.prototype.eos = function eos () {\n return this.tail === '';\n};\n\n/**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\nScanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n};\n\n/**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\nScanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n};\n\n/**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\nfunction Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n}\n\n/**\n * Creates a new context using the given view with this context\n * as the parent.\n */\nContext.prototype.push = function push (view) {\n return new Context(view, this);\n};\n\n/**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\nContext.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n};\n\n/**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\nfunction Writer () {\n this.templateCache = {\n _cache: {},\n set: function set (key, value) {\n this._cache[key] = value;\n },\n get: function get (key) {\n return this._cache[key];\n },\n clear: function clear () {\n this._cache = {};\n }\n };\n}\n\n/**\n * Clears all cached templates in this writer.\n */\nWriter.prototype.clearCache = function clearCache () {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n};\n\n/**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\nWriter.prototype.parse = function parse (template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n};\n\n/**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\nWriter.prototype.render = function render (template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n};\n\n/**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\nWriter.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context, config);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n};\n\nWriter.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials, config);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n};\n\nWriter.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate, config);\n};\n\nWriter.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n};\n\nWriter.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n};\n\nWriter.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n};\n\nWriter.prototype.escapedValue = function escapedValue (token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null)\n return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n};\n\nWriter.prototype.rawValue = function rawValue (token) {\n return token[1];\n};\n\nWriter.prototype.getConfigTags = function getConfigTags (config) {\n if (isArray(config)) {\n return config;\n }\n else if (config && typeof config === 'object') {\n return config.tags;\n }\n else {\n return undefined;\n }\n};\n\nWriter.prototype.getConfigEscape = function getConfigEscape (config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n }\n else {\n return undefined;\n }\n};\n\nvar mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: [ '{{', '}}' ],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache (cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache () {\n return defaultWriter.templateCache;\n }\n};\n\n// All high-level mustache.* functions use this writer.\nvar defaultWriter = new Writer();\n\n/**\n * Clears all cached templates in the default writer.\n */\nmustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n};\n\n/**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\nmustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n};\n\n/**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\nmustache.render = function render (template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, config);\n};\n\n// Export the escaping function so that the user may override it.\n// See https://github.com/janl/mustache.js/issues/244\nmustache.escape = escapeHtml;\n\n// Export these mainly for testing, but also for advanced usage.\nmustache.Scanner = Scanner;\nmustache.Context = Context;\nmustache.Writer = Writer;\n\nexport default mustache;\n","export default \"{{#mini_player}}\\n <div class=\\\"lt-player-mini-player-controls\\\">\\n <button class=\\\"lt-player-mini-player-controls__exit\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.external-link}}\\\" alt=\\\"\\\">\\n </button>\\n\\n <button type=\\\"button\\\" class=\\\"lt-player-mini-player-controls__play-button\\\">\\n <img class=\\\"lt-player-mini-player-controls__play-icon d-none\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"lt-player-mini-player-controls__pause-icon\\\" src=\\\"{{icons.pause}}\\\" alt=\\\"\\\">\\n </button>\\n <input class='lt-player-mini-player-controls__progress__seek' type='range' min='0' max='100' step='0.1' value='0'>\\n </div>\\n{{/mini_player}}\\n{{#player}}\\n {{#landscape}}\\n <div class=\\\"plyr__controls\\\">\\n <div class=\\\"top-controllers\\\">\\n <div class=\\\"top-controllers__background\\\"></div>\\n <div class=\\\"top-controllers__body\\\">\\n <div class=\\\"top-controllers__body__left\\\">\\n </div>\\n <div class=\\\"top-controllers__body__center\\\">\\n <p class=\\\"chapter\\\"></p>\\n </div>\\n <div class=\\\"top-controllers__body__right\\\">\\n {{#isShare}}\\n <button type=\\\"button\\\" class=\\\"plyr__control lt-player-share\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.share}}\\\" alt=\\\"\\\">\\n </button>\\n {{/isShare}}\\n </div>\\n </div>\\n </div>\\n <div class=\\\"lt-player-notification\\\">\\n <!-- <div class=\\\"lt-player-video-content\\\">-->\\n <!-- <div class=\\\"content__body\\\">-->\\n <!-- <h4 class=\\\"poster-title\\\">{{videoParagraph}}</h4>-->\\n <!-- <p class=\\\"poster-paragraph\\\">{{videoTitle}}</p>-->\\n <!-- </div>-->\\n <!-- </div>-->\\n <div class=\\\"lt-player-notification__notification-button-state d-none\\\">\\n <div class=\\\"player-state\\\">\\n <img class=\\\"player-state__play-icon filter d-none\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"player-state__pause-icon filter\\\" src=\\\"{{icons.pause}}\\\" alt=\\\"\\\">\\n </div>\\n </div>\\n <div class=\\\"lt-player-rewind-area\\\">\\n </div>\\n <div class=\\\"lt-player-rewind lt-player-notify\\\">\\n <div class=\\\"lt-player-rewind__icon\\\">\\n <div class=\\\"lt-player-rewind__icon-wrapper rotate\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n </div>\\n <span class=\\\"rewind\\\">10 sec</span>\\n </div>\\n </div>\\n <div class=\\\"lt-player-forward-area\\\">\\n </div>\\n <div class=\\\"lt-player-forward lt-player-notify\\\">\\n <div class=\\\"lt-player-forward__icon\\\">\\n <div class=\\\"lt-player-rewind__icon-wrapper\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n </div>\\n <span class=\\\"forward\\\">10 sec</span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"plyr__progress--wrapper\\\">\\n <div class=\\\"plyr__progress\\\">\\n <label for='seek{id}' class='plyr__sr-only'>Seek</label>\\n <input id='seek{id}' class='plyr__progress__seek' type='range' min='0' max='100' step='0.1'\\n value='0'\\n data-plyr='seek'>\\n <div class=\\\"bottom-controller__current\\\">\\n <div class=\\\"plyr__time plyr__time--current\\\" aria-label=\\\"Current time\\\">00:00</div>\\n <div class=\\\"plyr__time plyr__time--duration custom-duration\\\" aria-label=\\\"Duration\\\">00:00</div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"bottom-controller__background\\\"></div>\\n <div class=\\\"bottom-controller\\\">\\n {{#mobile}}\\n <div class=\\\"bottom-controller__left-buttons\\\">\\n <div class=\\\"bottom-controller__volume_control\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control volume_control__volume-button\\\">\\n <img class=\\\"volume-max d-none filter button-open\\\" data-range-value=\\\"1\\\" src=\\\"{{icons.volume-3}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-mute d-none filter button-open\\\" data-range-value=\\\"0\\\" src=\\\"{{icons.mute}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n </div>\\n {{/mobile}}\\n {{#desktop}}\\n <div class=\\\"bottom-controller__left-buttons\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control plyr__controls_settings-button settings\\\">\\n <img class=\\\"filter settings\\\" src=\\\"{{icons.settings}}\\\" alt=\\\"\\\">\\n </button>\\n <div class=\\\"bottom-controller__volume_control\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control volume_control__volume-button button-open\\\">\\n <img class=\\\"volume-max filter button-open\\\" data-range-value=\\\"1\\\" src=\\\"{{icons.volume-3}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-75 d-none filter button-open\\\" data-range-value=\\\"0.65\\\" src=\\\"{{icons.volume-2}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-50 d-none filter button-open\\\" data-range-value=\\\"0.35\\\" src=\\\"{{icons.volume-1}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-mute d-none filter button-open\\\" data-range-value=\\\"0\\\" src=\\\"{{icons.mute}}\\\" alt=\\\"\\\">\\n </button>\\n <div class=\\\"volume_control__background d-none\\\">\\n <button class=\\\"volume_control__volume-button-close button-close\\\">\\n <img class=\\\"volume-max button-close\\\" data-range-value=\\\"1\\\" src=\\\"{{icons.volume-3}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-75 d-none button-close\\\" data-range-value=\\\"0.65\\\" src=\\\"{{icons.volume-2}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-50 d-none button-close\\\" data-range-value=\\\"0.35\\\" src=\\\"{{icons.volume-1}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-mute d-none button-close\\\" data-range-value=\\\"0\\\" src=\\\"{{icons.mute}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n <div class=\\\"plyr__volume d-none volume_control__background__area volume-area-open\\\">\\n <input data-plyr=\\\"volume\\\" class=\\\"volume_control__background__area__range volume-area-open\\\" type=\\\"range\\\" min=\\\"0\\\" max=\\\"1\\\"\\n step=\\\"0.05\\\" value=\\\"1\\\"\\n autocomplete=\\\"off\\\" aria-label=\\\"Volume\\\">\\n </div>\\n </div>\\n </div>\\n {{/desktop}}\\n <div class=\\\"bottom-controller__center-buttons\\\">\\n <div class=\\\"bottom-controller__previous-chapter-view-wrapper\\\">\\n <p class=\\\"bottom-controller__previous-chapter-view\\\"></p>\\n <button type=\\\"button\\\" class=\\\"plyr__control skip-backward\\\" data-lt-player-chapterTimeStamp=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.skip-backward}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n <button type=\\\"button\\\" class=\\\"plyr__control skip-backward-seconds\\\" data-lt-player-chapterTimeStamp=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.fast-backward}}\\\" alt=\\\"\\\">\\n </button>\\n <div class=\\\"bottom-controller__play-button_body\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control play-button\\\" aria-label=\\\"Play, {title}\\\" data-plyr=\\\"play\\\">\\n <img class=\\\"bottom-controller__play-icon d-none\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"bottom-controller__pause-icon\\\" src=\\\"{{icons.pause}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n <button type=\\\"button\\\" class=\\\"plyr__control skip-forward-seconds\\\" data-lt-player-chapterTimeStamp=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.fast-forward}}\\\" alt=\\\"\\\">\\n </button>\\n <div class=\\\"bottom-controller__next-chapter-view-wrapper\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control skip-forward\\\" data-lt-player-chapterTimeStamp=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.skip-forward}}\\\" alt=\\\"\\\">\\n </button>\\n <p class=\\\"bottom-controller__next-chapter-view\\\"></p>\\n </div>\\n </div>\\n <div class=\\\"bottom-controller__right-buttons\\\">\\n {{#desktop}}\\n <button type=\\\"button\\\" class=\\\"plyr__control mini-player-control\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.mini-player}}\\\" alt=\\\"\\\">\\n </button>\\n\\n <button type=\\\"button\\\" class=\\\"plyr__control fullscreen-custom-control\\\">\\n <img class=\\\"filter minimize d-none\\\" src=\\\"{{icons.minimize}}\\\" alt=\\\"\\\">\\n <img class=\\\"filter maximize\\\" src=\\\"{{icons.maximize}}\\\" alt=\\\"\\\">\\n </button>\\n {{/desktop}}\\n {{#mobile}}\\n <button type=\\\"button\\\" class=\\\"plyr__control plyr__controls_speed-button settings\\\">\\n 2X\\n </button>\\n {{/mobile}}\\n </div>\\n </div>\\n <div class=\\\"player-lt__modal__mobile__background d-none\\\"></div>\\n <div class=\\\"player-lt__modal__mobile d-none\\\"></div>\\n </div>\\n {{/landscape}}\\n {{#portrait}}\\n <div class=\\\"plyr__controls\\\">\\n <div class=\\\"top-controllers\\\">\\n <div class=\\\"top-controllers__background\\\"></div>\\n <div class=\\\"top-controllers__body\\\">\\n <div class=\\\"top-controllers__body__left\\\">\\n {{#isShare}}\\n <button type=\\\"button\\\" class=\\\"plyr__control lt-player-share\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.share}}\\\" alt=\\\"\\\">\\n </button>\\n {{/isShare}}\\n </div>\\n <div class=\\\"top-controllers__body__center\\\">\\n <p class=\\\"chapter\\\"></p>\\n </div>\\n <div class=\\\"top-controllers__body__right\\\">\\n {{#desktop}}\\n <button type=\\\"button\\\" class=\\\"plyr__control fullscreen-custom-control\\\">\\n <img class=\\\"filter minimize d-none\\\" src=\\\"{{icons.minimize}}\\\" alt=\\\"\\\">\\n <img class=\\\"filter maximize\\\" src=\\\"{{icons.maximize}}\\\" alt=\\\"\\\">\\n </button>\\n <button type=\\\"button\\\" class=\\\"plyr__control mini-player-control\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.mini-player}}\\\" alt=\\\"\\\">\\n </button>\\n {{/desktop}}\\n </div>\\n </div>\\n </div>\\n <div class=\\\"lt-player-notification\\\">\\n <div class=\\\"lt-player-notification__notification-button-state\\\">\\n <div class=\\\"player-state\\\">\\n <img class=\\\"player-state__play-icon filter d-none\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"player-state__pause-icon filter d-none\\\" src=\\\"{{icons.pause}}\\\" alt=\\\"\\\">\\n </div>\\n </div>\\n <div class=\\\"lt-player-video-content\\\">\\n <div class=\\\"content__body\\\">\\n <h4 class=\\\"poster-title\\\">{{videoParagraph}}</h4>\\n <p class=\\\"poster-paragraph\\\">{{videoTitle}}</p>\\n </div>\\n </div>\\n <div class=\\\"lt-player-rewind-area\\\">\\n </div>\\n <div class=\\\"lt-player-rewind lt-player-notify\\\">\\n <div class=\\\"lt-player-rewind__icon\\\">\\n <span class=\\\"rewind\\\">10 sec</span>\\n <div class=\\\"lt-player-rewind__icon-wrapper rotate\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n </div>\\n </div>\\n </div>\\n <div class=\\\"lt-player-forward-area\\\">\\n </div>\\n <div class=\\\"lt-player-forward lt-player-notify\\\">\\n <div class=\\\"lt-player-forward__icon\\\">\\n <div class=\\\"lt-player-rewind__icon-wrapper\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n </div>\\n <span class=\\\"forward\\\">10 sec</span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"plyr__progress--wrapper\\\">\\n <div class=\\\"plyr__progress\\\">\\n <label for='seek{id}' class='plyr__sr-only'>Seek</label>\\n <input id='seek{id}' class='plyr__progress__seek' type='range' min='0' max='100' step='0.1'\\n value='0'\\n data-plyr='seek'>\\n <div class=\\\"bottom-controller__current\\\">\\n <div class=\\\"plyr__time plyr__time--current\\\" aria-label=\\\"Current time\\\">00:00</div>\\n <div class=\\\"plyr__time plyr__time--duration custom-duration\\\" aria-label=\\\"Duration\\\">00:00</div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"bottom-controller__background\\\"></div>\\n <div class=\\\"bottom-controller\\\">\\n {{#mobile}}\\n <div class=\\\"bottom-controller__volume_control\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control volume_control__volume-button\\\">\\n <img class=\\\"volume-max d-none filter button-open\\\" data-range-value=\\\"1\\\" src=\\\"{{icons.volume-3}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-mute d-none filter button-open\\\" data-range-value=\\\"0\\\" src=\\\"{{icons.mute}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n {{/mobile}}\\n {{#desktop}}\\n <div class=\\\"bottom-controller__volume_control\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control volume_control__volume-button button-open\\\">\\n <img class=\\\"volume-max filter button-open\\\" data-range-value=\\\"1\\\" src=\\\"{{icons.volume-3}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-75 d-none filter button-open\\\" data-range-value=\\\"0.65\\\" src=\\\"{{icons.volume-2}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-50 d-none filter button-open\\\" data-range-value=\\\"0.35\\\" src=\\\"{{icons.volume-1}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-mute d-none filter button-open\\\" data-range-value=\\\"0\\\" src=\\\"{{icons.mute}}\\\" alt=\\\"\\\">\\n </button>\\n <div class=\\\"volume_control__background d-none\\\">\\n <button class=\\\"volume_control__volume-button-close button-close\\\">\\n <img class=\\\"volume-max button-close\\\" data-range-value=\\\"1\\\" src=\\\"{{icons.volume-3}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-75 d-none button-close\\\" data-range-value=\\\"0.65\\\" src=\\\"{{icons.volume-2}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-50 d-none button-close\\\" data-range-value=\\\"0.35\\\" src=\\\"{{icons.volume-1}}\\\" alt=\\\"\\\">\\n <img class=\\\"volume-mute d-none button-close\\\" data-range-value=\\\"0\\\" src=\\\"{{icons.mute}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n <div class=\\\"plyr__volume d-none volume_control__background__area volume-area-open\\\">\\n <input data-plyr=\\\"volume\\\" class=\\\"volume_control__background__area__range volume-area-open\\\" type=\\\"range\\\" min=\\\"0\\\" max=\\\"1\\\"\\n step=\\\"0.05\\\" value=\\\"1\\\"\\n autocomplete=\\\"off\\\" aria-label=\\\"Volume\\\">\\n </div>\\n </div>\\n {{/desktop}}\\n <button type=\\\"button\\\" class=\\\"plyr__control skip-backward\\\" data-lt-player-chapterTimeStamp=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.skip-backward}}\\\" alt=\\\"\\\">\\n </button>\\n <div class=\\\"bottom-controller__play-button_body\\\">\\n <button type=\\\"button\\\" class=\\\"plyr__control play-button\\\" aria-label=\\\"Play, {title}\\\" data-plyr=\\\"play\\\">\\n <img class=\\\"bottom-controller__play-icon d-none\\\" src=\\\"{{icons.play}}\\\" alt=\\\"\\\">\\n <img class=\\\"bottom-controller__pause-icon\\\" src=\\\"{{icons.pause}}\\\" alt=\\\"\\\">\\n </button>\\n </div>\\n <button type=\\\"button\\\" class=\\\"plyr__control skip-forward\\\" data-lt-player-chapterTimeStamp=\\\"\\\">\\n <img class=\\\"filter\\\" src=\\\"{{icons.skip-forward}}\\\" alt=\\\"\\\">\\n </button>\\n {{#mobile}}\\n <button type=\\\"button\\\" class=\\\"plyr__control plyr__controls_speed-button settings\\\">\\n 2X\\n </button>\\n {{/mobile}}\\n\\n {{#desktop}}\\n <button type=\\\"button\\\" class=\\\"plyr__control plyr__controls_settings-button settings\\\">\\n <img class=\\\"filter settings\\\" src=\\\"{{icons.settings}}\\\" alt=\\\"\\\">\\n </button>\\n {{/desktop}}\\n </div>\\n <div class=\\\"player-lt__modal__mobile__background d-none\\\"></div>\\n <div class=\\\"player-lt__modal__mobile d-none\\\"></div>\\n </div>\\n {{/portrait}}\\n{{/player}}\\n\";","export default \"{{#modal}}\\n {{#mobile}}\\n {{#data}}\\n <div class=\\\"player-lt__mobile__modal-header\\\">\\n <span class=\\\"line-button\\\"></span>\\n </div>\\n <div class=\\\"player-lt__mobile__modal-content\\\">\\n {{{data}}}\\n </div>\\n {{/data}}\\n {{/mobile}}\\n {{#desktop}}\\n {{#data}}\\n <div class=\\\"player-lt__modal lt-modal-{{id}}\\\">\\n <div class=\\\"player-lt__modal-content\\\">\\n <span class=\\\"player-lt__close-button\\\">×</span>\\n {{{data}}}\\n </div>\\n </div>\\n {{/data}}\\n {{/desktop}}\\n{{/modal}}\\n{{#exist}}\\n{{#mobile}}\\n<div class=\\\"lt-player__additional-info-mobile\\\">\\n{{#buttons}}\\n <button class=\\\"additional-info-mobile\\\" data-lt-target=\\\"{{target}}\\\">{{#icon}}<img class=\\\"additional-info-mobile\\\" src=\\\"{{icon}}\\\" alt=\\\"\\\">{{/icon}}{{^icon}}<span></span>{{/icon}}</button>\\n{{/buttons}}\\n </div>\\n{{/mobile}}\\n{{#desktop}}\\n<div class=\\\"lt-player__additional-info\\\">\\n{{#buttons}}\\n <button data-lt-target=\\\"{{target}}\\\">{{#icon}}<img src=\\\"{{icon}}\\\" alt=\\\"\\\">{{/icon}}{{^icon}}<span></span>{{/icon}}</button>\\n{{/buttons}}\\n</div>\\n{{/desktop}}\\n\\n{{/exist}}\\n\";","import Mustache from \"mustache\";\nimport template from '../views/template.handlebars';\nimport controlsTemplate from '../views/controls.handlebars';\nimport posterTemplate from '../views/poster.handlebars';\nimport settingsTemplate from '../views/settings.handlebars';\nimport additionalInfo from '../views/additionalInfo.handlebars';\nimport share from '../views/share.handlebars';\nimport background from '../views/background.handlebars';\nimport miniPlayerControls from '../views/controls.handlebars';\nimport onloadPoster from '../views/onloadPoster.handlebars';\nimport {LTPlayerConfig} from \"../components/LTPlayerConfig\";\nimport {IconsService} from \"./IconsService\";\nimport {defaultType} from \"../global/types/ModuleTypes\";\n\nexport class TemplateService {\n /**\n * Return player template\n */\n constructor() {\n }\n\n getOnloadPoster(data: defaultType) {\n return Mustache.render(onloadPoster, data)\n }\n\n /**\n * Get Share html string\n * @param data\n */\n getShare(data: Object) {\n return Mustache.render(share, data);\n }\n\n /**\n * Get poster html string\n * @param data\n */\n getPoster(data: Object) {\n return Mustache.render(posterTemplate, data);\n }\n\n getSettings(data: Object) {\n return Mustache.render(settingsTemplate, data);\n }\n\n getAdditionalInfo(data : Object) {\n return Mustache.render(additionalInfo, data);\n }\n\n getAdditionalInfoButtons(data: Object) {\n return Mustache.render(additionalInfo, data);\n }\n\n /**\n *\n * @param config\n * @return String\n */\n getTemplateByType(config: LTPlayerConfig) {\n let configData = config.getConfigData();\n\n Object.assign(configData, {[config.getVideoType()]: true, mobile: (config.getDevice() !== 'mobile')});\n\n let render = Mustache.render(template, configData);\n\n delete configData.mobile;\n\n return render;\n }\n\n /**\n *\n * @param config\n * @param iconService\n */\n getTemplateControls(config: LTPlayerConfig, iconService: IconsService) {\n\n let configData = config.getConfigData()\n\n Object.assign(configData, {icons: iconService.getIconsByComponent('controls')});\n\n Object.assign(configData, {isShare: config.isShareData()});\n Object.assign(configData, {player: 'true'});\n\n if (configData.device === 'mobile') {\n Object.assign(configData, {mobile: 'true'});\n } else {\n Object.assign(configData, {desktop: 'true'});\n }\n\n switch (config.getPlayerType()) {\n case \"1\":\n Object.assign(configData, {portrait: 'true'});\n break\n case \"2\":\n Object.assign(configData, {landscape: 'true'});\n break\n case 1:\n Object.assign(configData, {portrait: 'true'});\n break\n case 2:\n Object.assign(configData, {landscape: 'true'});\n break\n case 'portrait':\n Object.assign(configData, {portrait: 'true'});\n break\n case 'landscape':\n Object.assign(configData, {landscape: 'true'});\n break\n }\n\n let render = Mustache.render(controlsTemplate,configData);\n\n delete configData.mobile;\n delete configData.desktop;\n\n return render;\n }\n\n getBackGroundTemplate(data: defaultType) {\n return Mustache.render(background, data);\n }\n\n getControlsMiniPlayer(data: defaultType) {\n return Mustache.render(miniPlayerControls, data);\n }\n\n\n}\n","export default \"<div class=\\\"lt-player-onload-poster\\\"> <img src=\\\"{{logo}}\\\" alt=\\\"\\\"> </div>\\n\";","export default \"<div class=\\\"share-controller\\\">\\n <div class=\\\"share-controller-wrapper share-inactive\\\">\\n <div class=\\\"share-controller-content\\\">\\n <div class=\\\"share-controller-frame\\\">\\n <div class=\\\"player-lt__close-button-e\\\">\\n <span class=\\\"player-lt__close-button\\\">×</span>\\n </div>\\n <div class=\\\"share-controller-title\\\">\\n <span>Share this video</span>\\n </div>\\n {{#canonicalUrl}}\\n <div class=\\\"share-controller-link-wrapper\\\">\\n <input type=\\\"text\\\" class=\\\"share-controller-url\\\"\\n value=\\\"{{canonicalUrl}}\\\">\\n <a href=\\\"javascript:void(0);\\\" class=\\\"share-controller-link\\\"\\n data-copy=\\\"{{canonicalUrl}}\\\"> COPY </a>\\n </div>\\n {{/canonicalUrl}}\\n {{#embedUrl}}\\n <div class=\\\"share-controller-link-wrapper\\\">\\n <input type=\\\"text\\\" class=\\\"share-controller-url\\\"\\n value='<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"{{embedUrl}}\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>'>\\n <a href=\\\"javascript:void(0);\\\" class=\\\"share-controller-link\\\"\\n data-copy='<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"{{embedUrl}}\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>'> COPY </a>\\n </div>\\n {{/embedUrl}}\\n <hr class=\\\"share-controller-hr\\\">\\n <div class=\\\"share-controller-via\\\">\\n You can also share via:\\n </div>\\n <div class=\\\"a2a_kit a2a_kit_size_32 a2a_default_style share-controller-icons\\\"\\n data-a2a-url=\\\"{{canonicalUrl}}\\\"\\n data-a2a-title=\\\"{{title}}\\\">\\n<!-- <a class=\\\"lt-plyr-embed-frame-toggle\\\">-->\\n<!-- <span class=\\\"lt-plyr-embed-frame-toggle share-icon__icon share-icon__icon--embed\\\">-->\\n<!-- <svg class=\\\"lt-plyr-embed-frame-toggle\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\"-->\\n<!-- xmlns=\\\"http://www.w3.org/2000/svg\\\">-->\\n<!-- <path class=\\\"lt-plyr-embed-frame-toggle\\\" d=\\\"M7 8L3 12L7 16\\\" stroke=\\\"#181818\\\" stroke-width=\\\"1.6\\\"-->\\n<!-- stroke-linecap=\\\"round\\\"-->\\n<!-- stroke-linejoin=\\\"round\\\"></path>-->\\n<!-- <path class=\\\"lt-plyr-embed-frame-toggle\\\" d=\\\"M17.0001 8L21.0001 12L17.0001 16\\\" stroke=\\\"#181818\\\" stroke-width=\\\"1.6\\\"-->\\n<!-- stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></path>-->\\n<!-- </svg>-->\\n<!-- </span>-->\\n<!-- <span class=\\\"lt-plyr-embed-frame-toggle share-icon__text\\\">Embed</span>-->\\n<!-- </a>-->\\n <a class=\\\"a2a_button_facebook\\\">\\n <span class=\\\"share-icon__icon\\\">\\n <svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <path\\n d=\\\"M0 20C0 8.9543 8.9543 0 20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40C8.9543 40 0 31.0457 0 20Z\\\"\\n fill=\\\"#3B5998\\\"/>\\n <path\\n d=\\\"M22.0847 31.7596V20.8785H25.0883L25.4864 17.1288H22.0847L22.0898 15.2521C22.0898 14.2741 22.1827 13.7501 23.5873 13.7501H25.4651V10H22.461C18.8527 10 17.5826 11.819 17.5826 14.878V17.1293H15.3334V20.8789H17.5826V31.7596H22.0847Z\\\"\\n fill=\\\"white\\\"/>\\n </svg>\\n </span>\\n <span class=\\\"share-icon__text\\\">\\n Facebook\\n </span>\\n </a>\\n\\n <a class=\\\"a2a_button_twitter\\\">\\n <span class=\\\"share-icon__icon\\\">\\n <svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <path\\n d=\\\"M0 20C0 8.9543 8.9543 0 20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40C8.9543 40 0 31.0457 0 20Z\\\"\\n fill=\\\"#55ACEE\\\"/>\\n <path\\n d=\\\"M19.401 16.2563L19.443 16.9483L18.7435 16.8636C16.1974 16.5387 13.973 15.4371 12.0844 13.5869L11.1611 12.6689L10.9233 13.3468C10.4197 14.858 10.7414 16.454 11.7907 17.5274C12.3503 18.1205 12.2243 18.2053 11.2591 17.8522C10.9233 17.7392 10.6295 17.6545 10.6016 17.6968C10.5036 17.7957 10.8394 19.0809 11.1052 19.5894C11.4689 20.2955 12.2104 20.9876 13.0218 21.3972L13.7072 21.722L12.8958 21.7361C12.1124 21.7361 12.0844 21.7502 12.1684 22.0468C12.4482 22.9649 13.5534 23.9394 14.7844 24.3631L15.6518 24.6597L14.8964 25.1116C13.7772 25.7613 12.4622 26.1285 11.1471 26.1567C10.5176 26.1709 10 26.2273 10 26.2697C10 26.411 11.7067 27.2019 12.7 27.5126C15.6798 28.4306 19.2191 28.0351 21.8772 26.4674C23.7658 25.3517 25.6543 23.1343 26.5357 20.9876C27.0113 19.8436 27.487 17.7533 27.487 16.7506C27.487 16.1009 27.5289 16.0162 28.3124 15.2394C28.774 14.7874 29.2077 14.2931 29.2916 14.1519C29.4315 13.8835 29.4175 13.8835 28.7041 14.1236C27.515 14.5473 27.3471 14.4908 27.9346 13.8553C28.3683 13.4033 28.8859 12.5842 28.8859 12.3441C28.8859 12.3017 28.6761 12.3723 28.4383 12.4994C28.1865 12.6407 27.6269 12.8525 27.2072 12.9796L26.4518 13.2197L25.7663 12.7537C25.3885 12.4994 24.8569 12.217 24.5771 12.1322C23.8637 11.9345 22.7725 11.9627 22.129 12.1887C20.3803 12.8243 19.2751 14.4626 19.401 16.2563Z\\\"\\n fill=\\\"white\\\"/>\\n </svg>\\n </span>\\n <span class=\\\"share-icon__text\\\">\\n Twitter\\n </span>\\n </a>\\n <a class=\\\"a2a_button_linkedin\\\">\\n <span class=\\\"share-icon__icon\\\">\\n <svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <path\\n d=\\\"M0 20C0 8.9543 8.9543 0 20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40C8.9543 40 0 31.0457 0 20Z\\\"\\n fill=\\\"#0077B5\\\"/>\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\"\\n d=\\\"M14.4322 12.3522C14.4322 13.6598 13.448 14.7061 11.8676 14.7061H11.8386C10.317 14.7061 9.33325 13.6598 9.33325 12.3522C9.33325 11.017 10.3469 10 11.8974 10C13.448 10 14.4028 11.017 14.4322 12.3522ZM14.1337 16.5649V30.183H9.60124V16.5649H14.1337ZM30.4792 30.183L30.4794 22.3748C30.4794 18.1919 28.2434 16.2451 25.2609 16.2451C22.8545 16.2451 21.7771 17.5669 21.1755 18.4941V16.5652H16.6425C16.7023 17.8431 16.6425 30.1833 16.6425 30.1833H21.1755V22.5779C21.1755 22.1709 21.2049 21.7649 21.3248 21.4735C21.6523 20.6604 22.3982 19.8185 23.6504 19.8185C25.2911 19.8185 25.947 21.0673 25.947 22.8973V30.183H30.4792Z\\\"\\n fill=\\\"white\\\"/>\\n </svg>\\n </span>\\n <span class=\\\"share-icon__text\\\">\\n Linkedin\\n </span>\\n </a>\\n\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\";","export default \"<div class=\\\"lt-player__poster\\\">\\n <div class=\\\"lt-player__poster__image-body lt-player__poster__background__grey\\\" >\\n <img class=\\\"lt-player__poster__img lt-player__poster__img__set-default\\\" alt=\\\"\\\" src=\\\"{{logoBig}}\\\">\\n </div>\\n <div class=\\\"lt-player__poster__body\\\">\\n <div class=\\\"content\\\">\\n <div class=\\\"content__header\\\">\\n <div class=\\\"poster-logo-header\\\">\\n <div class=\\\"logo\\\">\\n <img src=\\\"{{config.logo}}\\\" alt=\\\"\\\">\\n </div>\\n </div>\\n </div>\\n <div class=\\\"content__body\\\">\\n <h4 class=\\\"poster-title\\\">{{config.configData.videoParagraph}}</h4>\\n <p class=\\\"poster-paragraph\\\">{{config.configData.videoTitle}}</p>\\n </div>\\n <div class=\\\"content__footer\\\">\\n <div class=\\\"poster-buttons\\\">\\n <button class=\\\"poster-button-play\\\">\\n <img src=\\\"{{config.play}}\\\" alt=\\\"\\\" class=\\\"icon--not-pressed\\\" role=\\\"presentation\\\" >\\n </button>\\n <button class=\\\"poster-button-watch-now\\\">\\n Watch now\\n </button>\\n {{#isShare}}\\n <button class=\\\"poster-lt-player-share\\\" type=\\\"button\\\">\\n <img class=\\\"filter\\\" src=\\\"{{config.share}}\\\" alt=\\\"\\\" role=\\\"presentation\\\" >\\n </button>\\n {{/isShare}}\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\";","export default \"<div class=\\\"settings-controllers-enable__background d-none\\\"></div>\\n<div class=\\\"settings-controllers settings\\\">\\n <span class=\\\"line-button\\\"></span>\\n {{#desktop}}\\n <div class=\\\"settings-controllers-enable__subtitles settings\\\">\\n <p class=\\\"settings-text\\\">Subtitles</p>\\n <label class=\\\"subtitles-body__switch settings\\\">\\n <input id=\\\"captions-lt-player-{{id}}\\\" class=\\\"subtitles-body__input-switch settings\\\" value=\\\"\\\" type=\\\"checkbox\\\">\\n <label for=\\\"captions-lt-player-{{id}}\\\" class=\\\"subtitles-body__slider settings\\\"></label>\\n </label>\\n </div>\\n <div class=\\\"settings-controllers-enable__speed-range settings\\\">\\n <p class=\\\"settings-text\\\">Speed</p>\\n <div class=\\\"speed-range-input-body settings\\\">\\n <output class=\\\"settings speed-range-value\\\" style=\\\"display: flex; justify-content: center\\\" id=\\\"speed-range-value-{{id}}\\\"></output>\\n <input id=\\\"speed-range-{{id}}\\\" type=\\\"range\\\" min=\\\"0\\\" max=\\\"3\\\" step=\\\"1\\\" class=\\\"speed-range-input settings\\\">\\n </div>\\n </div>\\n {{/desktop}}\\n {{#mobile}}\\n <div class=\\\"settings-controllers-enable__speed-range settings\\\">\\n <p class=\\\"settings-text\\\">Speed</p>\\n <div class=\\\"speed-range-input-body mobile settings\\\">\\n <button class=\\\"button-speed settings button_active\\\" data-speed=\\\"1\\\">1</button>\\n <button class=\\\"button-speed settings\\\" data-speed=\\\"1.25\\\">1.25</button>\\n <button class=\\\"button-speed settings\\\" data-speed=\\\"1.5\\\">1.5</button>\\n <button class=\\\"button-speed settings\\\" data-speed=\\\"2\\\">2</button>\\n </div>\\n </div>\\n {{/mobile}}\\n <div class=\\\"settings-controllers-enable__button-save settings\\\">\\n <button class=\\\"button-save settings\\\">Save</button>\\n </div>\\n</div>\\n\";","export default \"{{#embedded }}\\n<div class=\\\"plyr__video-embed embed_player\\\" data-plyr-provider=\\\"{{origin}}\\\" data-plyr-embed-id=\\\"{{embedId}}\\\" data-plyr-embed-hash=\\\"{{embedHash}}\\\">\\n</div>\\n{{/embedded}}\\n{{#video}}\\n<video class=\\\"embed_player lt-player-wrapper\\\" playsinline controls>\\n <source src=\\\"{{videoUrl}}\\\"/>\\n {{#defaultConfig.captions}}\\n <track kind=\\\"captions\\\" label=\\\"{{label}} captions\\\" src=\\\"{{url}}\\\" srclang=\\\"{{srclang}}\\\" {{default}} />\\n {{/defaultConfig.captions}}\\n</video>\\n{{/video}}\\n\";","export default \"<div class=\\\"lt-player-mini-player-background\\\">\\n <div class=\\\"logo\\\">\\n <img src=\\\"{{logo}}\\\" alt=\\\"\\\">\\n </div>\\n</div>\\n\";","export class IconsService {\n\n path\n\n posterMapIconsName = [\n 'play',\n 'logo',\n 'share'\n ];\n\n controlsMapIconsName = [\n 'play',\n 'skip-backward',\n 'skip-forward',\n 'volume-3',\n 'volume-2',\n 'volume-1',\n 'mute',\n 'settings',\n 'pause',\n 'minimize',\n 'maximize',\n 'mini-player',\n 'share',\n 'external-link',\n 'fast-backward',\n 'fast-forward'\n ];\n\n additionalInfoIconsName = [\n 'file-text',\n 'user',\n 'university',\n ]\n\n constructor() {\n this.path = require.context('../assets/icons', false);\n }\n\n getLogo(): any {\n\n let response = null\n\n this.path.keys().forEach(item => {\n let name = item.replace(/(\\.(?:jpg|png|svg))$/i, \"\").replace('./', '');\n\n if (name === 'logo-big') {\n response = this.path(item);\n }\n })\n\n return response;\n }\n\n getIconsByComponent(type: string) {\n\n let response = {};\n\n switch (type) {\n case 'poster':\n this.path.keys().forEach(item => {\n this.posterMapIconsName.forEach(mapElement => {\n let name = item.replace(/(\\.(?:jpg|png|svg))$/i, \"\").replace('./', '');\n if (name === mapElement) {\n Object.assign(response, {[name] : this.path(item)})\n }\n })\n })\n break\n case 'controls':\n this.path.keys().forEach(item => {\n this.controlsMapIconsName.forEach(mapElement => {\n let name = item.replace(/(\\.(?:jpg|png|svg))$/i, \"\").replace('./', '');\n if (name === mapElement) {\n Object.assign(response, {[name] : this.path(item)})\n }\n })\n })\n break\n case 'additionalInfo':\n this.path.keys().forEach(item => {\n this.additionalInfoIconsName.forEach(mapElement => {\n let name = item.replace(/(\\.(?:jpg|png|svg))$/i, \"\").replace('./', '');\n if (name === mapElement) {\n Object.assign(response, {[name] : this.path(item)})\n }\n })\n })\n }\n\n\n return response;\n }\n\n getControlsIcons() {\n let response = {};\n this.path.keys().forEach(item => {\n this.posterMapIconsName.forEach(mapElement => {\n let name = item.replace(/(\\.(?:jpg|png|svg))$/i, \"\").replace('./', '');\n if (name === mapElement) {\n Object.assign(response, {[name] : this.path(item)})\n }\n })\n })\n\n return response;\n }\n\n}\n","import {LTPlayer} from \"../LTPlayerType\";\n\nexport class LTPLayerAddInfoResizeManager {\n device: string\n playerInstance: LTPlayer.LandscapeType | LTPlayer.PortraitType\n\n constructor(playerInstance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n this.playerInstance = playerInstance;\n this.device = playerInstance.playerConfig.getDevice();\n }\n\n setContainer() {\n\n }\n}\n","export class LTPlayerRotateDeviceService {\n constructor() {\n }\n\n getDeviceOrientation() {\n return screen.orientation.type.replace('-primary', '');\n }\n}\n","import {LTPlayer} from \"../components/LTPlayerType\";\nimport {defaultType} from \"../global/types/ModuleTypes\";\nimport Plyr from \"plyr\";\nimport {LTPLayerAddInfoResizeManager} from \"../components/addInfo/LTPLayerAddInfoResizeManager\";\nimport {LTPlayerAdditionalInfo} from \"../components/addInfo/LTPlayerAdditionalInfoEvents\";\nimport {LTPLayerAddInfo} from \"../components/addInfo/LTPlayerAddInfoManager\";\nimport {LTPlayerRotateDeviceService} from \"./LTPlayerRotateDeviceService\";\n\n/**\n * Window service (set width and height)\n */\nexport class ResizeService {\n orientation: LTPlayerRotateDeviceService\n playerInstance: LTPlayer.LandscapeType | LTPlayer.PortraitType\n player: Plyr\n playerContainer: HTMLElement\n playerParentContainer: HTMLElement\n device: string\n playerType: string\n addInfo: LTPLayerAddInfoResizeManager\n\n addInfoOutSide: boolean\n addInfoInSide: Boolean\n\n playerParam: defaultType = {\n width : null,\n height : null\n }\n\n\n defaultPortrate = {\n max : {\n width: 500,\n height: 776\n },\n min : {\n width: 200,\n height: 400\n },\n size : {\n 438 : \"lg\",\n 370 : \"md\",\n 290 : \"sm\",\n 200 : \"xs\"\n }\n }\n\n defaultLandscape = {\n max : {\n width: 1067,\n height: 600\n },\n min : {\n width: 300,\n height: 150\n },\n size : {\n 1067 : \"lg\",\n 800 : \"md\",\n 533 : \"sm\",\n 266 : \"xs\"\n }\n }\n\n constructor() {\n this.orientation = new LTPlayerRotateDeviceService();\n }\n\n init(playerInstance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n this.playerInstance = playerInstance;\n this.playerContainer = playerInstance.playerConfig.getPlayerElementContainer();\n this.player = playerInstance.plyr;\n this.device = playerInstance.playerConfig.getDevice();\n this.playerParentContainer = this.playerContainer.parentElement;\n this.addInfo = new LTPLayerAddInfoResizeManager(playerInstance);\n this.setPlayerDimensions();\n }\n\n protected setPlayerDimensions() {\n\n if (!this.playerInstance.playerConfig.getPlayerType()) {\n return;\n }\n\n\n switch (this.playerInstance.playerConfig.getPlayerType()) {\n case \"1\":\n this.setPortrate();\n this.playerType = 'portrait';\n break\n case \"2\":\n this.setLandScape();\n this.playerType = 'landscape';\n break\n case 1:\n this.setPortrate();\n this.playerType = 'portrait';\n break\n case 2:\n this.setLandScape();\n this.playerType = 'landscape';\n break\n case 'portrait':\n this.playerType = 'landscape';\n this.setPortrate();\n break\n case 'landscape':\n this.playerType = 'landscape';\n this.setLandScape();\n break\n }\n\n }\n\n protected setPortrate() {\n this.setEvent(this.defaultPortrate);\n }\n\n\n protected setLandScape() {\n this.setEvent(this.defaultLandscape);\n }\n\n protected setEvent(defaultData: defaultType) {\n new ResizeObserver(response => {\n this.setDimensions(response[0].target.clientWidth, response[0].target.clientHeight, defaultData)\n }).observe(this.playerParentContainer);\n }\n\n public setEventAddInfo(buttonsTemplate: string, deskEvent: LTPlayerAdditionalInfo.Desktop, controller: LTPLayerAddInfo.Controller) {\n new ResizeObserver(response => {\n this.setAddInfoByDimensions(response[0].target.clientWidth, buttonsTemplate, deskEvent, controller)\n }).observe(this.playerInstance.plyr.elements.container);\n }\n\n protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent: LTPlayerAdditionalInfo.Desktop, controller: LTPLayerAddInfo.Controller) {\n\n const createAddInfoButtonsOutSide = () => {\n let addInfoContainer = document.querySelector('.lt-player__additional-info');\n if (addInfoContainer) {\n addInfoContainer.remove();\n }\n\n this.playerInstance.plyr.elements.container.insertAdjacentHTML(\"afterend\", buttonsTemplate);\n let inserted = document.querySelector('.lt-player__additional-info');\n inserted.classList.add('lt-player__additional-info__is_set_out-side');\n deskEvent.set(controller);\n }\n\n const createAddInfoButtonsInSide = () => {\n let addInfoContainer = document.querySelector('.lt-player__additional-info');\n if (addInfoContainer) {\n addInfoContainer.remove();\n }\n\n let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');\n\n controlsInfoBody.insertAdjacentHTML(\"afterend\", buttonsTemplate);\n let inserted = document.querySelector('.lt-player__additional-info');\n inserted.classList.add('lt-player__additional-info__is_set_in-side');\n deskEvent.set(controller);\n }\n\n if (containerWidth >= 380) {\n\n if (this.addInfoInSide && containerWidth + 70 <= 380) {\n return;\n }\n\n if (this.addInfoOutSide) {\n return;\n }\n\n this.addInfoOutSide = true;\n this.addInfoInSide = false;\n\n createAddInfoButtonsOutSide();\n } else {\n\n if (this.addInfoOutSide && containerWidth + 70 >= 380) {\n return;\n }\n\n if (this.addInfoInSide) {\n return;\n }\n\n this.addInfoInSide = true;\n this.addInfoOutSide = false;\n createAddInfoButtonsInSide();\n }\n\n }\n\n protected setDimensions(containerWidth: number, containerHeight: number, defaultData: defaultType) {\n\n const setClass = () => {\n if (this.playerInstance.plyr.elements.container !== undefined) {\n\n let itemClass:string | boolean = false;\n let dimension: defaultType = this.defaultPortrate;\n\n if (this.playerType === 'landscape') {\n dimension = this.defaultLandscape;\n }\n\n Object.keys(dimension.size).forEach( item => {\n if (this.playerContainer.classList.contains(`lt-player--${this.playerType}__${(dimension.size as defaultType)[item]}`)){\n this.playerContainer.classList.remove(`lt-player--${this.playerType}__${(dimension.size as defaultType)[item]}`)\n }\n if (this.playerContainer.clientWidth >= parseInt(item)) {\n itemClass = `lt-player--${this.playerType}__${(dimension.size as defaultType)[item]}`;\n }\n })\n\n\n if (itemClass) {\n this.playerContainer.classList.add(itemClass);\n }\n\n }\n }\n\n const setWidth = () => {\n if (this.playerInstance.plyr.elements.container !== undefined) {\n if (this.device === 'mobile' && this.orientation.getDeviceOrientation() === 'landscape' && this.playerType === 'portrate') {\n this.playerContainer.style.width = '100%';\n return;\n }\n if (containerWidth >= defaultData.max.width) {\n this.playerContainer.style.width = `${defaultData.max.width}px`;\n this.playerParam.width = defaultData.max.width;\n return;\n }\n if (containerWidth < defaultData.max.width && containerWidth >= defaultData.min.width) {\n this.playerContainer.style.width = `${containerWidth}px`;\n this.playerParam.width = containerWidth;\n return;\n }\n if (containerWidth < defaultData.min.width) {\n this.playerContainer.style.width = `${defaultData.min.width}px`;\n this.playerParam.width = defaultData.min.width;\n return;\n }\n }\n }\n\n const setHeight = () => {\n if (this.playerInstance.plyr.elements.container !== undefined) {\n if (this.device === 'mobile' && this.orientation.getDeviceOrientation() === 'landscape' && this.playerType === 'portrate') {\n this.playerContainer.style.height = '90vh';\n return;\n }\n if (containerHeight >= defaultData.max.height) {\n this.playerContainer.style.height = `${defaultData.max.height}px`;\n this.playerParam.height = defaultData.max.height;\n return;\n }\n if (containerHeight >= defaultData.min.height && containerHeight < defaultData.max.height) {\n this.playerContainer.style.height = `${containerHeight}px`;\n this.playerParam.height = containerHeight;\n return;\n }\n if (containerHeight < defaultData.min.height) {\n this.playerContainer.style.height = `${defaultData.min.height}px`;\n this.playerParam.height = defaultData.min.height;\n return;\n }\n }\n }\n\n setWidth();\n setHeight();\n setClass();\n }\n}\n","import {LTPlayerPoster} from \"./LTPlayerPoster\";\nimport Plyr from \"plyr\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {LTPlayerConfig} from \"../LTPlayerConfig\";\nimport {IconsService} from \"../../services/IconsService\";\nimport {LoaderService} from \"../../services/LoaderService\";\nimport {LTPlayer} from \"../LTPlayerType\";\n\n/**\n * Preload video\n */\nexport class LTPlayerPosterPreload {\n config: LTPlayerConfig;\n iconService: IconsService;\n templateService: TemplateService;\n plyr: Plyr\n\n /**\n * Setup preload video with poster cover\n * @param plyr\n * @param templateService\n * @param config\n * @param iconService\n */\n initPreload(plyr: Plyr, templateService: TemplateService, config: LTPlayerConfig, iconService: IconsService) {\n\n this.plyr = plyr;\n this.iconService = iconService;\n this.templateService = templateService;\n this.config = config;\n\n const playerContainer = plyr.elements.container;\n const imagePosterContainer = playerContainer.querySelector('.lt-player__poster__image-body');\n\n\n if (imagePosterContainer) {\n\n if (config.isAutoPreload()) {\n this.plyr.on('play', () => {\n imagePosterContainer.classList.add('lt-player__poster__image-body--preload');\n })\n } else {\n setTimeout(() => {\n imagePosterContainer.classList.add('lt-player__poster__image-body--preload');\n }, 800)\n }\n\n\n }\n }\n}\n","import {TemplateService} from \"../../services/TemplateService\";\nimport {LTPlayerConfig} from \"../LTPlayerConfig\";\nimport {IconsService} from \"../../services/IconsService\";\nimport Plyr from \"plyr\";\n\nexport class LTPlayerPoster {\n custom_selector: string = 'lt-player__poster';\n config: LTPlayerConfig;\n iconService: IconsService;\n templateService: TemplateService;\n plyr: Plyr\n constructor(player: Plyr, templateService: TemplateService, config: LTPlayerConfig, iconService: IconsService) {\n this.plyr = player;\n this.iconService = iconService;\n this.templateService = templateService;\n this.config = config;\n }\n\n setTemplate() {\n\n Object.assign(this.config, this.iconService.getIconsByComponent('poster'));\n\n const logo: string = this.iconService.getLogo();\n\n const posterTemplate = this.templateService.getPoster({config:this.config, logoBig: logo, isShare : !!(this.config.getShareData())});\n\n const container = this.plyr.elements.wrapper;\n\n container.insertAdjacentHTML(\"afterend\", posterTemplate);\n }\n\n\n setImage() {\n return new Promise((resolve, reject) => {\n const posterImageBody: HTMLElement = this.plyr.elements.container.querySelector('.lt-player__poster__image-body');\n\n if (posterImageBody) {\n const imageTag = document.createElement('img');\n imageTag.classList.add('lt-player__poster__img--set-custom');\n imageTag.src = this.config.getPosterImage();\n\n imageTag.onload = function LTPlayerLoadPosterImage() {\n posterImageBody.append(imageTag);\n resolve(true);\n }\n\n imageTag.onerror = function LTPlayerLoadPosterImageError() {\n reject(true);\n }\n }\n })\n }\n\n removeDefaultImage() {\n const posterImage: HTMLElement = this.plyr.elements.container.querySelector('.lt-player__poster__img');\n posterImage.classList.add('d-none');\n }\n\n}\n","export class LoaderService {\n static getSpinner() {\n return `<div class=\"lt-player-spinner__loader\">\n <svg class=\"lt-player-spinner__loader__circle-svg\" viewBox=\"0 0 50 50\">\n <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"5\"></circle>\n </svg>\n </div>`;\n }\n\n static removeSpinner(playerContainer: HTMLElement) {\n if (!playerContainer) {\n return\n }\n\n const spinner = playerContainer.querySelector('.lt-player-spinner__loader');\n\n if (spinner) {\n spinner.remove();\n }\n }\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {LoaderService} from \"../../services/LoaderService\";\n\nexport class LTPlayerPosterPreloadEvents {\n static preloadEvents = {\n removePosterImage(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerElementContainer = instance.playerConfig.getPlayerElementContainer();\n const playerOnloadPosterSelector = playerElementContainer.parentElement.querySelector('.plyr__poster');\n if (playerOnloadPosterSelector) {\n playerOnloadPosterSelector.classList.add('lt-player__preload-hide');\n }\n },\n\n embedPlay(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {\n let playerContainer = instance.plyr.elements.container;\n playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner());\n const preloadData = instance.playerConfig.getPreload();\n const playAutoPreload = () => {\n if (preloadData.start !== 0) {\n instance.plyr.embed.setCurrentTime(preloadData.start).then(() => {\n instance.plyr.embed.setMuted(true).then(function () {\n instance.plyr.embed.play().then(function () {\n instance.plyr.volume = 0;\n LoaderService.removeSpinner(playerContainer)\n });\n }).catch(function () {\n // an error occurred\n });\n });\n LoaderService.removeSpinner(playerContainer)\n } else {\n instance.plyr.volume = 0;\n instance.plyr.embed.play().then(function () {\n LoaderService.removeSpinner(playerContainer)\n });\n }\n }\n\n const pausePreload = () => {\n if (preloadData.start !== 0) {\n instance.plyr.embed.setCurrentTime(preloadData.start).then( () => {\n instance.plyr.embed.pause().then(function() {\n instance.plyr.volume = 0;\n LoaderService.removeSpinner(playerContainer)\n });\n });\n } else {\n instance.plyr.volume = 0;\n instance.plyr.embed.pause().then(function() {\n LoaderService.removeSpinner(playerContainer)\n });\n }\n\n LoaderService.removeSpinner(playerContainer)\n }\n\n const playEvent = () => {\n if (instance.playerConfig.isAutoPreload()) {\n playAutoPreload();\n } else {\n pausePreload();\n }\n }\n\n switch (type) {\n case 'event':\n this.removePosterImage(instance);\n playEvent();\n break\n case 'action':\n playAutoPreload();\n break\n }\n },\n\n html5Play(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {\n\n const play = () => {\n instance.plyr.volume = 0;\n const preloadData = instance.playerConfig.getPreload();\n\n if (preloadData.start !== 0) {\n instance.plyr.currentTime = preloadData.start;\n }\n\n switch (type) {\n case 'event':\n this.removePosterImage(instance);\n if (instance.playerConfig.isAutoPreload()) {\n instance.plyr.play();\n } else {\n instance.plyr.pause();\n }\n break\n case 'action':\n instance.plyr.play();\n break\n }\n }\n\n\n let checkPlayer = false;\n\n instance.plyr.on('loadeddata', () => {\n checkPlayer = true;\n play();\n })\n\n if (!checkPlayer) {\n play();\n }\n\n },\n\n stop(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {\n const playEvent = () => {\n const preloadData = instance.playerConfig.getPreload();\n if (instance.plyr.currentTime >= preloadData.stop) {\n if (instance.plyr.isEmbed) {\n this.embedPlay(instance, 'action');\n } else {\n this.html5Play(instance, 'action');\n }\n\n }\n }\n\n const stop = () => {\n instance.plyr.pause();\n }\n\n switch (type) {\n case 'event':\n playEvent();\n break\n case 'action' :\n stop();\n }\n }\n }\n}\n","import Plyr from \"plyr\";\nimport {LTPlayerPosterPreload} from \"./poster/LTPlayerPosterPreload\";\nimport {LTPlayerPosterPreloadEvents} from \"./poster/LTPlayerPosterPreloadEvents\";\nimport {LTPlayer} from \"./LTPlayerType\";\n\nexport namespace LTPlayerDevMethode {\n\n export class Player {\n\n player: Plyr\n\n constructor(player: Plyr) {\n this.player = player;\n }\n\n play() {\n let playerContainer = this.player.elements.container;\n const disablePoster = () => {\n let poster = playerContainer.querySelector(`.lt-player__poster`);\n\n if (poster) {\n poster.classList.add('d-none');\n }\n\n let controls = playerContainer.querySelector('.player__controls');\n\n if (controls) {\n controls.classList.remove('d-none');\n }\n }\n\n if (!this.player.playing) {\n this.player.play();\n }\n\n disablePoster();\n }\n\n pause() {\n this.player.pause();\n }\n\n stop() {\n let playerContainer = this.player.elements.container;\n\n const enablePoster = () => {\n\n const customPoster = playerContainer.querySelector('.lt-player__poster');\n const controls = playerContainer.querySelector('.plyr__controls');\n\n playerContainer.classList.add('plyr--stopped')\n customPoster.classList.remove('d-none');\n controls.classList.add('d-none');\n }\n\n const disableSettings = () => {\n\n const settingsBody = playerContainer.querySelector('.settings-controllers');\n\n if (settingsBody.classList.contains('settings-controllers-enable')) {\n\n const settingsBody = playerContainer.querySelector('.settings-controllers');\n this.player.elements.controls.classList.remove('plyr__controls-enable-settings')\n\n settingsBody.classList.remove('settings-controllers-enable');\n\n const background = document.querySelector('.settings-controllers-enable__background');\n\n if (!background.classList.contains('d-none')) {\n background.classList.add('d-none');\n }\n\n }\n }\n\n const exitMiniPLayer = () => {\n let miniPlayer = {\n controls : playerContainer.querySelector('.lt-player-mini-player-controls'),\n background: playerContainer.querySelector('.lt-player-mini-player-background'),\n enable: playerContainer.querySelector('.lt-player-mini-enable')\n };\n\n if (miniPlayer.controls) {\n miniPlayer.controls.remove();\n }\n\n if (miniPlayer.background) {\n miniPlayer.background.remove();\n }\n\n if (miniPlayer.enable) {\n miniPlayer.enable.classList.remove('lt-player-mini-enable')\n }\n }\n\n const exitFullScreen = () => {\n if (this.player.fullscreen.active) {\n this.player.fullscreen.exit();\n }\n }\n\n this.player.stop()\n enablePoster();\n disableSettings();\n exitMiniPLayer();\n exitFullScreen();\n\n }\n }\n\n export class Preload {\n\n instance: LTPlayer.PortraitType | LTPlayer.LandscapeType;\n preloadPoster: LTPlayerPosterPreload\n\n constructor(player: LTPlayer.PortraitType | LTPlayer.LandscapeType, preloadPoster: LTPlayerPosterPreload) {\n this.instance = player;\n this.preloadPoster = preloadPoster;\n }\n\n play() {\n if (this.instance.plyr.isEmbed) {\n let instance = this.instance;\n let plyr = this.instance.plyr;\n plyr.on('ready', function LTPLayerMobileReadyEmbed() {\n plyr.embed.ready().then(function LTPlayerEmbedReady() {\n LTPlayerPosterPreloadEvents.preloadEvents.embedPlay(instance, 'action')\n })\n });\n\n LTPlayerPosterPreloadEvents.preloadEvents.embedPlay(instance, 'action')\n\n }\n\n if (this.instance.plyr.isHTML5) {\n let instance = this.instance;\n LTPlayerPosterPreloadEvents.preloadEvents.html5Play(instance, 'action')\n }\n }\n\n pause() {\n LTPlayerPosterPreloadEvents.preloadEvents.stop(this.instance, 'action')\n }\n\n stop() {\n return console.error(\"Sorry, this method is not implemented, don't worry, be happy\");\n }\n\n }\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {LoaderService} from \"../../services/LoaderService\";\n\nexport namespace LTPlayerPosterEvents {\n export class Common {\n\n poster = {\n getButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType): undefined | NodeListOf<Element> {\n const playerContainer = instance.plyr.elements.container;\n const playButtons = playerContainer.querySelectorAll('.poster-button-play, .poster-button-watch-now');\n\n if (playButtons.length === 0) {\n if (process.env.DEBUG === \"true\") {\n console.error('No button selector found');\n }\n return undefined;\n }\n\n return playButtons;\n },\n\n reset(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerContainer = instance.plyr.elements.container;\n const disablePoster = () => {\n playerContainer.querySelector(`.lt-player__poster`).classList.add('d-none');\n playerContainer.querySelector('.plyr__controls').classList.remove('d-none');\n }\n\n const play = () => {\n if (instance.plyr.isEmbed) {\n disablePoster();\n playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner())\n instance.plyr.embed.play().then(() => {\n instance.plyr.volume = 1;\n LoaderService.removeSpinner(playerContainer)\n },\n () => {\n instance.plyr.volume = 1;\n LoaderService.removeSpinner(playerContainer)\n instance.plyr.play();\n });\n } else {\n disablePoster();\n instance.plyr.volume = 1;\n instance.plyr.play();\n }\n\n if (instance.playerConfig.getPreload()) {\n LoaderService.removeSpinner(playerContainer);\n\n if (instance.playerConfig.getDevice() === 'mobile') {\n if (instance.plyr.isEmbed) {\n instance.plyr.embed.getTextTracks().then( (response: string | any[]) => {\n if (response.length !== 0) {\n instance.plyr.toggleCaptions(true);\n }\n })\n } else {\n instance.plyr.toggleCaptions(true);\n }\n }\n }\n\n }\n\n if (instance.playerConfig.getPreload().isActive) {\n instance.plyr.volume = 1;\n instance.plyr.currentTime = 0;\n instance.playerConfig.getPreload().isActive = false;\n }\n\n play();\n }\n }\n\n }\n\n\n export class Desktop {\n /**\n * Add play event on poster buttons\n */\n buttons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n const common = new LTPlayerPosterEvents.Common();\n\n common.poster.getButtons(instance)?.forEach(button => {\n button.addEventListener('click', function LTPlayerPosterButtons(event) {\n event.preventDefault();\n common.poster.reset(instance);\n })\n });\n }\n }\n\n export class Mobile {\n /**\n * Add play event on poster buttons mobile\n */\n buttons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n const playerControlsContainer = instance.plyr.elements.controls;\n const playerContainer = instance.plyr.elements.container;\n const common = new LTPlayerPosterEvents.Common();\n\n common.poster.getButtons(instance)?.forEach(button => {\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(button);\n\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobilePosterButtons() {\n\n common.poster.reset(instance);\n\n playerContainer.classList.remove('plyr__poster-enabled');\n\n instance.playerControl.mobileEvents.showControls(instance);\n });\n }\n });\n }\n\n /**\n * Remove Onload Poster from player\n */\n onload(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerElementContainer = instance.playerConfig.getPlayerElementContainer();\n const playerOnloadPosterSelector = playerElementContainer.parentElement.querySelector('.lt-player-onload-poster');\n\n if (playerOnloadPosterSelector) {\n playerElementContainer.classList.remove('d-none');\n playerElementContainer.parentElement.querySelector('.lt-player-onload-poster').remove();\n }\n }\n\n showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n const playerContainer = instance.plyr.elements.container;\n const playerControlsContainer = instance.plyr.elements.controls;\n const playerPoster = playerContainer.querySelector('.plyr__poster');\n\n\n let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerPoster);\n\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobilePosterShowControls() {\n if (!playerControlsContainer.classList.contains('.plyr__controls-enable')) {\n instance.playerControl.mobileEvents.showControls(instance);\n }\n });\n }\n }\n\n\n }\n}\n","import {LTPlayerPosterPreload} from \"./LTPlayerPosterPreload\";\nimport {LTPlayerPoster} from \"./LTPlayerPoster\";\nimport {LTPlayer} from \"../LTPlayerType\";\nimport {LTPlayerDevMethode} from \"../LTPlayerDevMethode\";\nimport {LTPlayerConfig} from \"../LTPlayerConfig\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {IconsService} from \"../../services/IconsService\";\nimport {LTPlayerPosterEvents} from \"./LTPlayerPosterEvents\";\n\nexport class LTPlayerPosterManager {\n\n instance: LTPlayer.LandscapeType | LTPlayer.PortraitType\n preload: LTPlayerPosterPreload\n poster: LTPlayerPoster\n playerConfig: LTPlayerConfig\n iconService: IconsService\n templateService: TemplateService\n desktopEvents: LTPlayerPosterEvents.Desktop;\n mobileEvents: LTPlayerPosterEvents.Mobile;\n constructor() {\n this.desktopEvents = new LTPlayerPosterEvents.Desktop();\n this.mobileEvents = new LTPlayerPosterEvents.Mobile();\n }\n\n init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n this.instance = instance;\n this.playerConfig = instance.playerConfig;\n this.templateService = instance.templateService;\n this.iconService = instance.iconService;\n\n this.poster = new LTPlayerPoster(this.instance.plyr, this.templateService, this.playerConfig, this.iconService);\n this.poster.setTemplate();\n\n if (this.playerConfig.getPosterImage()) {\n this.poster.setImage().then(\n result => {\n this.poster.removeDefaultImage();\n if (this.playerConfig.getPreload()) {\n this.initPreload();\n }\n });\n }\n if (this.playerConfig.getPreload()) {\n this.initPreload();\n }\n\n }\n initPreload() {\n this.preload = new LTPlayerPosterPreload();\n this.preload.initPreload(this.instance.plyr, this.templateService, this.playerConfig, this.iconService);\n this.instance.devMethodePreload = new LTPlayerDevMethode.Preload(this.instance, this.preload);\n }\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {defaultType} from \"../../global/types/ModuleTypes\";\n\nexport namespace LTPlayerShareEvents {\n\n export class common {\n\n isPlaying : boolean\n activeModal(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, selectors: defaultType) {\n selectors.shareContainer.classList.remove('share-inactive');\n selectors.shareContainer.classList.add('share-active');\n if (instance.plyr.playing) {\n this.isPlaying = true;\n instance.plyr.pause();\n } else {\n this.isPlaying = false;\n }\n }\n\n inactiveModal(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, selectors: defaultType) {\n selectors.shareContainer.classList.add('share-inactive');\n selectors.shareContainer.classList.remove('share-active');\n if (this.isPlaying) {\n instance.plyr.play();\n }\n }\n\n getSelector(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n return {\n buttons : [\n instance.plyr.elements.container.querySelector('.poster-lt-player-share'),\n instance.plyr.elements.controls.querySelector('.lt-player-share'),\n ],\n shareContainer : instance.plyr.elements.container.querySelector('.share-controller-wrapper')\n };\n }\n\n copyButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n return instance.plyr.elements.container.querySelectorAll('.share-controller-link');\n }\n }\n export class mobile {\n common : LTPlayerShareEvents.common\n constructor() {\n this.common = new common();\n }\n\n init(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n const common = this.common;\n common.getSelector(instance).buttons.forEach(button => {\n if (button) {\n button.addEventListener('click', () => {\n common.activeModal(instance, this.common.getSelector(instance));\n })\n }\n })\n\n common.getSelector(instance).shareContainer.addEventListener('click', function LTPlayerShareArea(event) {\n event.preventDefault();\n if ( common.getSelector(instance).shareContainer.classList.contains('share-active')) {\n let target = event.target as HTMLElement;\n if (target.classList.contains('share-active') || target.classList.contains('player-lt__close-button')) {\n common.inactiveModal(instance, common.getSelector(instance));\n }\n }\n })\n\n\n }\n }\n\n export class desktop {\n common : LTPlayerShareEvents.common\n constructor() {\n this.common = new common();\n }\n\n init(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n const common = this.common;\n common.getSelector(instance).buttons.forEach(button => {\n if (button) {\n button.addEventListener('click', () => {\n common.activeModal(instance, this.common.getSelector(instance));\n })\n }\n })\n\n common.getSelector(instance).shareContainer.addEventListener('click', function LTPlayerShareArea(event) {\n event.preventDefault();\n if ( common.getSelector(instance).shareContainer.classList.contains('share-active')) {\n let target = event.target as HTMLElement;\n if (target.classList.contains('share-active') || target.classList.contains('player-lt__close-button')) {\n common.inactiveModal(instance, common.getSelector(instance));\n }\n }\n })\n\n\n }\n }\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {LTPlayerConfig} from \"../LTPlayerConfig\";\nimport {IconsService} from \"../../services/IconsService\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {LTPlayerShareEvents} from \"./LTPlayerShareEvents\";\nimport {shareType} from \"../../global/types/ModuleTypes\";\n\nexport class LTPlayerShare {\n instance: LTPlayer.LandscapeType | LTPlayer.PortraitType\n playerConfig: LTPlayerConfig\n iconService: IconsService\n templateService: TemplateService\n events: shareType = { desktop: new LTPlayerShareEvents.desktop(), mobile: new LTPlayerShareEvents.mobile() }\n\n constructor() {\n }\n\n init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n this.instance = instance;\n this.playerConfig = instance.playerConfig;\n this.templateService = instance.templateService;\n this.iconService = instance.iconService;\n this.setTemplate();\n this.appendScriptTag();\n }\n\n setTemplate() {\n const playerContainer = this.instance.plyr.elements.wrapper;\n playerContainer.insertAdjacentHTML(\"afterend\", this.templateService.getShare(this.playerConfig.getShareData()));\n }\n\n appendScriptTag() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = \"https://static.addtoany.com/menu/page.js\";\n script.async;\n document.body.appendChild(script);\n }\n\n}\n","import {LTPlayerConfig} from \"../../components/LTPlayerConfig\";\nimport {LTPlayerControls} from \"../../components/controls/LTPlayerControls\";\nimport Plyr from \"plyr\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {IconsService} from \"../../services/IconsService\";\nimport {ResizeService} from \"../../services/ResizeService\";\nimport {LTPlayerEvents} from \"../../components/events/LTPlayer\";\nimport {LTPLayerAddInfo} from \"../../components/addInfo/LTPlayerAddInfoManager\";\nimport {LTPlayerMini} from \"../../components/controls/LTPlayerMini\";\nimport {LTPlayerDevMethode} from \"../../components/LTPlayerDevMethode\";\nimport {LTPlayerEventsManager} from \"../../components/LTPlayerEventsManager\";\nimport {LTPlayerPosterManager} from \"../../components/poster/LTPlayerPosterManager\";\nimport {LTPlayerShare} from \"../../components/share/LTPlayerShare\";\n\n/**\n * Default Player type Service\n */\nexport class LTPlayerController {\n playerId: number\n windowService: ResizeService\n playerConfig: LTPlayerConfig\n playerControl: LTPlayerControls\n plyr: Plyr\n templateService: TemplateService\n iconService: IconsService\n desktopEvents: LTPlayerEvents.Desktop;\n mobileEvents: LTPlayerEvents.Mobile;\n additionalInfoService: LTPLayerAddInfo.Controller | null\n miniPlayer: LTPlayerMini\n devMethodePlayer: LTPlayerDevMethode.Player\n devMethodePreload: LTPlayerDevMethode.Preload\n eventInstance: LTPlayerEventsManager\n posterManager : LTPlayerPosterManager\n share : LTPlayerShare\n /**\n * Base player type service\n */\n constructor() {\n this.windowService = new ResizeService();\n this.iconService = new IconsService();\n this.templateService = new TemplateService();\n this.playerControl = new LTPlayerControls(this.templateService);\n this.posterManager = new LTPlayerPosterManager();\n this.share = new LTPlayerShare();\n }\n}\n","import Plyr from \"plyr\";\nimport {defaultType} from \"../../global/types/ModuleTypes\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {IconsService} from \"../../services/IconsService\";\nimport {LTPlayer} from \"../LTPlayerType\";\n\n/**\n * Create and add mini-player\n */\nexport class LTPlayerMini {\n\n player: Plyr\n playerContainer: defaultType = {\n width: null,\n height: null\n }\n templateService: TemplateService\n private iconService: IconsService;\n\n constructor() {\n }\n\n /**\n * Init mini player setup\n * @param player\n * @param templateService\n * @param iconService\n */\n init(player: Plyr, templateService: TemplateService, iconService: IconsService) {\n this.templateService = templateService;\n this.iconService = iconService;\n this.player = player;\n this.setup();\n }\n\n /**\n * Setup mini player\n * @private\n */\n private setup() {\n const player = this.player;\n const _this = this;\n player.on('ready', function () {\n const playerContainer = player.elements.container;\n const playerWrapper = player.elements.wrapper;\n _this.playerContainer.width = playerWrapper.getBoundingClientRect().width;\n _this.playerContainer.height = playerWrapper.getBoundingClientRect().height;\n\n const button = playerContainer.querySelector('.mini-player-control');\n\n if (button) {\n button.addEventListener('click', function (event) {\n event.preventDefault();\n playerWrapper.classList.add('lt-player-mini-enable');\n _this.setBackground(playerWrapper);\n _this.addMouseHoverControllers();\n _this.addPlayPauseEvents();\n _this.setSeekBar();\n _this.exitMiniPlayer(_this.player);\n })\n }\n })\n }\n\n /**\n * Set seek bar, add style component\n */\n setSeekBar() {\n const player = this.player;\n const playerContainer = player.elements.container;\n const seekBar: HTMLInputElement | any = playerContainer.querySelector('.lt-player-mini-player-controls__progress__seek');\n\n seekBar.addEventListener('input', function () {\n player.currentTime = parseInt(seekBar.value);\n })\n\n const setValue = (seekBar: HTMLInputElement | any) => {\n let value = (seekBar.value - seekBar.min)/(seekBar.max-seekBar.min)*100;\n seekBar.value = player.currentTime.toFixed(2).toString();\n seekBar.max = player.duration.toFixed(2).toString();\n seekBar.style.background = 'linear-gradient(to right, #D8D846 0%, #D8D846 ' + value + '%, transparent ' + value + '%, transparent 100%)';\n }\n\n\n player.on('timeupdate', function () {\n seekBar.value = player.currentTime.toFixed(2).toString();\n seekBar.max = player.duration.toFixed(2).toString();\n setValue(seekBar);\n })\n setValue(seekBar);\n\n }\n\n /**\n * Set background on primary player on mini player is enable\n * @param playerWrapper\n */\n private setBackground(playerWrapper: HTMLElement) {\n const background = this.templateService.getBackGroundTemplate({logo : this.iconService.getLogo()});\n const controls = this.templateService.getControlsMiniPlayer({\n mini_player: 'true',\n icons: this.iconService.getIconsByComponent('controls'),\n })\n\n playerWrapper.insertAdjacentHTML(\"afterend\", background);\n playerWrapper.children[0].insertAdjacentHTML(\"afterend\", controls);\n }\n\n /**\n * Add mini player mouse event\n * @private\n */\n private addMouseHoverControllers() {\n const playerContainer = this.player.elements.container;\n const miniPLayerSelector = playerContainer.querySelector('.lt-player-mini-enable');\n\n miniPLayerSelector.addEventListener('mouseover', function () {\n const miniPLayerControls = miniPLayerSelector.querySelector('.lt-player-mini-player-controls');\n\n if (miniPLayerControls) {\n miniPLayerControls.classList.add('lt-player-mini-player-controls-enable');\n }\n\n })\n\n miniPLayerSelector.addEventListener('mouseleave', function () {\n const miniPLayerControls = miniPLayerSelector.querySelector('.lt-player-mini-player-controls');\n if (miniPLayerControls) {\n miniPLayerControls.classList.remove('lt-player-mini-player-controls-enable');\n }\n })\n }\n\n /**\n * Add play/pause event\n */\n addPlayPauseEvents() {\n const playerContainer = this.player.elements.container;\n const player = this.player;\n\n\n const playButton = playerContainer.querySelector('.lt-player-mini-player-controls__play-button');\n\n\n if (playButton) {\n let playerContainer = player.elements.container;\n\n const playIcon = playerContainer.querySelector('.lt-player-mini-player-controls__play-icon');\n const pauseIcon = playerContainer.querySelector('.lt-player-mini-player-controls__pause-icon');\n\n if (player.playing) {\n playIcon.classList.add('d-none');\n pauseIcon.classList.remove('d-none');\n } else {\n pauseIcon.classList.add('d-none');\n playIcon.classList.remove('d-none');\n }\n\n playButton.addEventListener('click', function (event) {\n event.preventDefault();\n if (player.playing) {\n player.pause();\n playIcon.classList.remove('d-none');\n pauseIcon.classList.add('d-none');\n } else {\n player.play();\n pauseIcon.classList.remove('d-none');\n playIcon.classList.add('d-none');\n }\n })\n }\n }\n\n /**\n * Add exit mini player event, return to primary player\n * @param player\n */\n exitMiniPlayer(player: Plyr) {\n const playerContainer = player.elements.container;\n const exit = playerContainer.querySelector('.lt-player-mini-player-controls__exit');\n\n if (!exit) {\n return\n }\n\n exit.addEventListener('click', function (event) {\n event.preventDefault();\n playerContainer.querySelector('.lt-player-mini-player-controls').remove();\n playerContainer.querySelector('.lt-player-mini-player-background').remove();\n playerContainer.querySelector('.lt-player-mini-enable').classList.remove('lt-player-mini-enable')\n })\n }\n\n\n event = {\n removeMiniPLOnFullScreen(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, type: string) {\n\n let player = instance.plyr;\n const playerControllers = player.elements.controls;\n const fullScreenButton = playerControllers.querySelector('.mini-player-control');\n\n if (fullScreenButton) {\n switch (type) {\n case 'enterfullscreen' :\n fullScreenButton.classList.add('d-none');\n break\n case 'exitfullscreen':\n fullScreenButton.classList.remove('d-none');\n break\n }\n }\n\n }\n }\n}\n","import {urlDataType, urlVideoType} from \"../global/types/ModuleTypes\";\n\nexport class Helper {\n static getDevice() {\n let device = 'desktop'; //initiate as false\n if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)\n || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0,4))) {\n device = 'mobile';\n }\n return device;\n }\n\n static setDebugEvent(data: string | object, type: string) {\n if (process.env.DEBUG === \"true\") {\n switch (type) {\n case 'info':\n console.info(data);\n break\n case 'error':\n console.error(data);\n break\n case 'table':\n console.table(data)\n break\n }\n\n\n }\n }\n\n static processConfigData(videoUrl: string) {\n\n const regex = /^(http:\\/\\/|https:\\/\\/)(player\\.vimeo\\.com|vimeo\\.com|youtu\\.be|www\\.youtube\\.com)\\/([\\w\\/]+)(\\?.*)?$/;\n\n let groupMatch;\n let type = 'video';\n let origin = 'video';\n\n if ((groupMatch = regex.exec(videoUrl)) !== null) {\n groupMatch.forEach((match: string) => {\n if (match !== undefined) {\n if (match.includes('vimeo')) {\n type = 'embedded';\n origin = 'vimeo';\n }\n if (match.includes('youtube')) {\n type = 'embedded';\n origin = 'youtube';\n }\n }\n });\n }\n\n return {\n type: type,\n origin: origin\n };\n }\n\n static getEmbeddedID = (url: string) => {\n const urlGroups = url.split('?')[0].split('/');\n if (urlGroups.length > 4) {\n return url.split('?')[0].split('/').slice(-2)[0];\n }\n return url.split('?')[0].split('/').slice(-1)[0];\n\n }\n\n static getEmbeddedHash = (url: string) => {\n const urlGroups = url.split('?')[0].split('/');\n if (urlGroups.length > 4) {\n return url.split('?')[0].split('/').slice(-1)[0];\n }\n return null;\n }\n}\n","import {defaultType, playerConfigType, urlDataType} from \"../global/types/ModuleTypes\";\nimport {Helper} from \"../services/Helper\";\n\nexport class LTPlayerConfig {\n\n private configData: playerConfigType = {\n preload: false,\n selector : '',\n autoPlay : false,\n videoTitle: '',\n posterImage: '',\n videoParagraph: '',\n videoUrl: '',\n videoType: '',\n embedId: '',\n embedHash: '',\n origin: '',\n playerId: '',\n playerContainer: '',\n vimeo: {\n 'controls': false,\n \"active\": false,\n 'gesture': 'media',\n 'transparent': false,\n 'speed': true,\n 'portrait': true,\n 'keyboard': false,\n 'title': false,\n 'byline': false,\n 'playsinline': true,\n 'background' : true\n },\n youtube: {\n 'controls': 0,\n 'noCookie': false,\n 'rel': 0,\n 'showinfo': 0,\n 'iv_load_policy': 3,\n 'modestbranding': 1,\n 'playsinline': true,\n },\n defaultConfig : {\n speed : {\n selected : 1,\n captions : false,\n update: true\n },\n captions : {\n active : false\n },\n clickToPlay : false,\n playsinline : true,\n pip : false\n },\n share: null,\n chapters : null,\n dimensions: null,\n playerType: null,\n device : 'desktop'\n }\n\n\n private defaultDimensions: defaultType = {\n max_width: '450px',\n min_width: '350px',\n max_height: '780px',\n min_height: '600px'\n }\n\n /**\n * @param config\n */\n constructor(config: playerConfigType) {\n this.setConfig(config);\n this.processConfigData();\n }\n\n setConfig(config: playerConfigType) {\n Object.keys(this.configData).forEach(item => {\n\n const setCustomConfig = (item: object, configItem: object) => {\n\n if (configItem && Object.keys(configItem).length > 0) {\n\n Object.keys(configItem).forEach( element => {\n if (item[element as keyof typeof item] === configItem[element as keyof typeof configItem]) {\n item[element as keyof typeof item] = configItem[element as keyof typeof configItem]\n } else {\n Object.assign(item, {[element]:configItem[element as keyof typeof configItem]})\n }\n })\n }\n\n return item;\n\n }\n\n const setDimensions = (data: defaultType) : any => {\n\n let response: defaultType = {\n width: '100%',\n min_width: this.defaultDimensions.min_width,\n max_width: this.defaultDimensions.max_width,\n height: '100%',\n min_height: this.defaultDimensions.min_height,\n max_height: this.defaultDimensions.max_height,\n }\n\n\n if (data) {\n if (data.width <= parseInt(this.defaultDimensions.max_width.replace('px', '')) && data.width >= parseInt(this.defaultDimensions.min_width.replace('px', ''))) {\n response.width = (Number.isInteger(data.width)) ? `${data.width}px` : '100%';\n }\n\n if (data.height <= parseInt(this.defaultDimensions.max_height.replace('px', '')) && data.height >= parseInt(this.defaultDimensions.min_height.replace('px', ''))) {\n response.height = (Number.isInteger(data.height)) ? `${data.height}px` : '100%';\n }\n }\n\n return response;\n\n }\n\n switch (item) {\n case 'vimeo':\n this.configData[item] = setCustomConfig(this.configData[item], config[item]);\n break;\n case 'youtube':\n this.configData[item] = setCustomConfig(this.configData[item], config[item]);\n break;\n case 'defaultConfig':\n this.configData[item] = setCustomConfig(this.configData[item], config[item]);\n break\n case 'dimensions':\n this.configData[item] = setDimensions(config[item]);\n break\n case 'additionalInfo':\n this.configData[item] = config[item];\n break\n case 'playerId' :\n if (typeof item === 'string') {\n this.configData[item] = parseInt(config[item]);\n } else {\n this.configData[item] = config[item];\n }\n break\n case 'preload':\n const setDefaultTimeRange = () => {\n this.configData[item] = {\n start : 0,\n stop : 10\n }\n }\n\n const setTimeRange = (config: defaultType) => {\n\n setDefaultTimeRange();\n\n if (config.start) {\n\n let start = config.start;\n\n if (typeof start === 'string') {\n start = parseFloat(start);\n }\n\n this.configData[item].start = start;\n\n\n if (!start) {\n this.configData[item].start = 0;\n }\n }\n if (config.stop) {\n\n let stop = config.stop;\n\n if (typeof stop === 'string') {\n stop = parseFloat(stop);\n }\n\n this.configData[item].stop = stop;\n\n if (!stop) {\n this.configData[item].stop = 10;\n }\n\n }\n\n if (!config.start || !config.stop) {\n setDefaultTimeRange();\n }\n }\n\n\n const setPreloadType = (type: defaultType) => {\n\n this.configData[item].autoType = true;\n\n if (type.onload !== undefined) {\n if (typeof type.onload === 'string' && type.onload === 'false') {\n this.configData[item].autoType = false;\n }\n\n if (typeof type.onload === 'boolean') {\n if (!type.onload) {\n this.configData[item].autoType = false;\n }\n }\n }\n\n }\n\n const setActive = () => {\n this.configData[item].isActive = true;\n }\n\n if (typeof config[item] === 'object') {\n if (Object.keys(config[item]).length !== 0) {\n setTimeRange(config[item]);\n setPreloadType(config[item]);\n setActive();\n }\n\n if (Object.keys(config[item]).length === 0) {\n setDefaultTimeRange();\n setPreloadType(config[item]);\n setActive();\n }\n }\n\n\n if (typeof config[item] === 'string' && config[item] !== 'false') {\n switch (config[item]) {\n case 'true':\n setDefaultTimeRange();\n setPreloadType(config[item]);\n setActive();\n break\n }\n }\n\n if (typeof config[item] === 'boolean') {\n if (config[item]) {\n setDefaultTimeRange();\n setPreloadType(config[item]);\n setActive();\n }\n }\n\n break\n default:\n if (config[item]) {\n this.configData[item] = config[item];\n }\n }\n })\n }\n\n processConfigData() {\n\n let videoUrl: string = this.configData.videoUrl;\n\n const urlVideoData: urlDataType = Helper.processConfigData(videoUrl);\n\n this.configData.origin = urlVideoData.origin;\n\n if (!this.configData.videoType.toLowerCase() || (urlVideoData.type !== this.configData.videoType.toLowerCase())) {\n Object.assign(this.configData, {videoType: urlVideoData.type})\n }\n\n if (this.configData.videoType === 'embedded') {\n\n this.configData.embedId = Helper.getEmbeddedID(this.configData.videoUrl);\n\n if (Helper.getEmbeddedHash(this.configData.videoUrl)) {\n this.configData.embedHash = Helper.getEmbeddedHash(this.configData.videoUrl);\n }\n\n }\n }\n\n getDimensions() {\n return this.configData.dimensions\n }\n\n getAdditionalInfo() {\n return this.configData.additionalInfo;\n }\n\n getVideoTitle() {\n return this.configData.videoTitle;\n }\n\n getPosterImage() {\n return this.configData.posterImage;\n }\n\n getParagraph() {\n return this.configData.videoParagraph;\n }\n\n getVideoType() {\n return this.configData.videoType;\n }\n\n getVideoUrl() {\n return this.configData.videoUrl;\n }\n\n getPlayerId() {\n return this.configData.playerId;\n }\n\n getConfigData() {\n return this.configData;\n }\n\n getPlayerElementContainer() {\n return this.configData.playerContainer;\n }\n\n getVideoOrigin() {\n return this.configData.origin;\n }\n\n /**\n *\n * @param origin\n */\n getConfigByOrigin(origin: string) {\n return (this.configData[origin] !== undefined) ? this.configData[origin] : null;\n }\n\n getDefaultConfigItems() {\n return this.configData.defaultConfig;\n }\n\n getDomSelector() {\n return this.configData.selector;\n }\n\n getChapters() {\n return this.configData.chapters\n }\n\n isShareData() {\n if (this.configData.share) {\n return Object.keys(this.configData.share).length > 0;\n }\n\n return false;\n }\n\n getShareData() {\n return this.configData.share\n }\n\n getCaptions () {\n return this.configData.defaultConfig.captions\n }\n\n getPlayerType() {\n return this.configData.playerType\n }\n\n setPlayerId(id: number) {\n this.configData.playerId = id;\n }\n\n isAutoPlay() {\n return this.configData.autoPlay;\n }\n\n getPreload() {\n return this.configData.preload;\n }\n isAutoPreload() {\n return this.configData.preload.autoType;\n }\n\n getDevice() {\n return this.configData.device;\n }\n\n getEmbedOrigin() {\n return {[this.getVideoOrigin()] : this.getConfigByOrigin(this.getVideoOrigin())};\n }\n\n getFullscreenMode() {\n if (this.getDevice() === 'mobile') {\n return {fullscreen: {enabled: false}}\n } else {\n return false\n }\n }\n}\n\n","import {LTPlayer} from \"../LTPlayerType\";\nimport Plyr, {PlyrEvent} from \"plyr\";\nimport {LoaderService} from \"../../services/LoaderService\";\nimport {LTPlayerPosterPreloadEvents} from \"../poster/LTPlayerPosterPreloadEvents\";\nimport {plyr} from \"../../global/types/ModuleTypes\";\n\nexport class LTPlayerCommon {\n\n player: LTPlayer.PortraitType | LTPlayer.LandscapeType;\n plyr: Plyr;\n\n playerPlay() {\n const instance = this.player;\n\n this.plyr.on('play', function LTPlayerPlay(event) {\n\n instance.desktopEvents.playPause(event);\n\n if (instance.additionalInfoService) {\n instance.additionalInfoService.setCurrentPlayerPlay(instance, event);\n }\n\n })\n }\n setDefaultSettingsConfig() {\n const instance = this.player;\n\n instance.plyr.speed = 1;\n\n\n if (instance.playerConfig.getDevice() === 'desktop') {\n instance.plyr.toggleCaptions(false);\n return;\n }\n\n if (instance.playerConfig.getPreload()) {\n instance.plyr.toggleCaptions(false);\n return;\n }\n\n if (instance.plyr.isEmbed) {\n instance.plyr.embed.getTextTracks().then( (response: string | any[]) => {\n if (response.length !== 0) {\n instance.plyr.toggleCaptions(true);\n } else {\n instance.plyr.toggleCaptions(false);\n }\n })\n } else {\n\n let checkCaptions = (instance.plyr as plyr).captions;\n\n if (checkCaptions.currentTrack >= 0) {\n instance.plyr.toggleCaptions(true);\n }\n }\n }\n removeDesktopPlyrEvents() {\n let plyrInstance = this.plyr as Plyr as Plyr & { eventListeners: Array<any> }\n\n plyrInstance.eventListeners.forEach(function (eventListener) {\n //remove dblclick event from plyr\n if (eventListener.type === 'dblclick') {\n eventListener.element.removeEventListener(eventListener.type, eventListener.callback, eventListener.options);\n }\n });\n }\n\n removeMobilePlyrEvents() {\n let plyrInstance = this.plyr as Plyr as Plyr & { eventListeners: Array<any> }\n const playerInstance = this.player;\n\n plyrInstance.eventListeners.forEach(function (eventListener) {\n\n if (playerInstance.playerConfig.getDevice() === 'mobile') {\n const deleteTouchEvents = () => {\n if (!eventListener.element.classList.contains('plyr__progress')) {\n if (!eventListener.element.classList.contains('plyr__progress__seek')) {\n eventListener.element.removeEventListener(eventListener.type, eventListener.callback, eventListener.options);\n }\n }\n if (eventListener.element.classList.length === 0) {\n eventListener.element.removeEventListener(eventListener.type, eventListener.callback, eventListener.options);\n }\n }\n\n //remove mobile touch event from plyr\n if (eventListener.type === 'touchstart') {\n deleteTouchEvents();\n }\n\n if (eventListener.type === 'touchend') {\n deleteTouchEvents();\n }\n\n if (eventListener.type === 'touchmove') {\n deleteTouchEvents();\n }\n if (eventListener.type === 'mousemove') {\n deleteTouchEvents();\n }\n\n if (eventListener.type === 'click') {\n eventListener.element.removeEventListener(eventListener.type, eventListener.callback, eventListener.options);\n }\n }\n });\n }\n\n onReadyPlayer() {\n\n //set share button\n this.player.share.events.desktop.init(this.player);\n\n this.player.windowService.init(this.player);\n //set poster\n this.player.posterManager.mobileEvents.onload(this.player);\n\n if (this.player.additionalInfoService) {\n this.player.additionalInfoService.init(this.player, this.player.playerId, this.player.iconService, this.player.templateService);\n }\n\n if (this.player.playerConfig.isAutoPlay()) {\n let playerContainer = this.player.plyr.elements.container;\n\n const disablePoster = () => {\n playerContainer.querySelector(`.lt-player__poster`).classList.add('d-none');\n playerContainer.querySelector('.plyr__controls').classList.remove('d-none');\n }\n\n if (this.player.plyr.embed) {\n disablePoster();\n playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner())\n\n this.player.plyr.embed.play().then(function () {\n LoaderService.removeSpinner(playerContainer)\n });\n LoaderService.removeSpinner(playerContainer)\n } else {\n this.player.plyr.play();\n disablePoster();\n }\n\n }\n }\n\n endVideo() {\n this.player.desktopEvents.endVideo(this.player);\n }\n\n timeUpdate(event: PlyrEvent) {\n\n //set chapters time and title\n if (this.player.playerControl.chaptersService) {\n this.player.playerControl.chaptersService.updateCurrentTimeAndTitle(this.player, event);\n }\n\n //set captions\n this.player.playerControl.desktopEvents.subtitles(this.player);\n }\n\n\n preloadPoster = {\n ready(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n const preloadData = instance.playerConfig.getPreload();\n\n LTPlayerPosterPreloadEvents.preloadEvents.removePosterImage(instance);\n\n if (preloadData.autoType) {\n if (instance.plyr.isEmbed) {\n LTPlayerPosterPreloadEvents.preloadEvents.embedPlay(instance, 'event');\n\n }\n\n if (instance.plyr.isHTML5) {\n LTPlayerPosterPreloadEvents.preloadEvents.html5Play(instance, 'event');\n\n }\n }\n\n },\n\n timeUpdate(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, type: string) {\n LTPlayerPosterPreloadEvents.preloadEvents.stop(instance, type);\n }\n }\n\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {LTPlayerSettingsControlsManager} from \"../controls/LTPlayerSettingsControlsManager\";\nimport Plyr from \"plyr\";\nimport {plyr} from \"../../global/types/ModuleTypes\";\nimport {LTPlayerEventsManager} from \"../LTPlayerEventsManager\";\nimport {LTPlayerCommon} from \"./LTPlayerCommon\";\nimport {EventsInterfaces} from \"../../global/interfaces/EventsInterfaces\";\n\nexport class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces {\n setup(eventManager: LTPlayerEventsManager) {\n this.player = eventManager.player;\n this.plyr = eventManager.plyr;\n\n //init common events\n this.playerPlay();\n this.removeDesktopPlyrEvents();\n\n //init desktop events\n this.plyrOnReady();\n this.plyrEmbedOnReady();\n this.plyrEndVideo();\n this.plyrFullScreen();\n this.plyrTimeUpdate();\n this.plyrOnPlay();\n this.plyrOnPause();\n }\n\n\n plyrOnReady(): void {\n let eventManager = this;\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('ready', function LTPLayerDeskTopReady() {\n // set player id\n if (!instance.playerConfig.getPlayerId()) {\n instance.playerConfig.setPlayerId((instance.plyr as plyr).id);\n instance.playerId = instance.playerConfig.getPlayerId();\n }\n\n\n eventManager.setDefaultSettingsConfig();\n\n if (instance.plyr.isHTML5) {\n eventManager.onReadyPlayer();\n eventManager.modal(instance);\n instance.posterManager.desktopEvents.buttons(instance);\n\n if (instance.playerConfig.getPreload()) {\n eventManager.preloadPoster.ready(instance);\n }\n }\n\n //set show/hide controls\n instance.playerControl.desktopEvents.showHide(instance)\n\n //set fullscreen button\n instance.playerControl.desktopEvents.fullScreenButtons(instance);\n\n //set play/pause icon\n instance.playerControl.desktopEvents.playPauseIcon(instance, 'ready');\n\n //set rewind/forward\n instance.playerControl.desktopEvents.backwardForward(instance);\n\n instance.playerControl.desktopEvents.backwardForwardSeconds(instance);\n\n //set volume controller\n instance.playerControl.desktopEvents.volume(instance);\n\n //set settings controller\n instance.playerControl.settingsControlsManager.init(instance);\n\n //set chapters buttons\n if (instance.playerControl.chaptersService) {\n instance.playerControl.chaptersService.setButtonsEvents(instance);\n }\n })\n }\n\n modal(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n window.addEventListener('click', function LTPLayerWindowClick(event: MouseEvent) {\n\n if (instance.additionalInfoService) {\n instance.additionalInfoService.desktopEvents.windowDesktopEvents(event);\n }\n LTPlayerSettingsControlsManager.closeSettingsEvent(event);\n })\n }\n plyrEmbedOnReady(): void {\n let eventManager = this;\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n if (plyr.isEmbed) {\n plyr.on('ready', function LTPLayerDesktopReadyEmbed() {\n plyr.embed.ready().then (function LTPlayerEmbedReady() {\n eventManager.modal(instance);\n eventManager.onReadyPlayer();\n instance.posterManager.desktopEvents.buttons(instance);\n if (instance.playerConfig.getPreload()) {\n eventManager.preloadPoster.ready(instance);\n }\n })\n })\n }\n }\n\n plyrEndVideo() {\n let eventManager = this;\n let plyr: Plyr = this.plyr;\n\n plyr.on('ended', function LTPlayerDesktopEndVideo() {\n eventManager.endVideo();\n })\n }\n\n plyrFullScreen() {\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('enterfullscreen', function LTPlayerDesktopEnterFullScreen() {\n //remove mini player on fullscreen\n instance.miniPlayer.event.removeMiniPLOnFullScreen(instance, 'enterfullscreen');\n\n //fullscreen icon\n instance.playerControl.desktopEvents.fullscreenIcon(instance, 'enterfullscreen');\n\n });\n\n plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen() {\n //add mini player on exit fullscreen\n instance.miniPlayer.event.removeMiniPLOnFullScreen(instance, 'exitfullscreen');\n\n //fullscreen icon\n instance.playerControl.desktopEvents.fullscreenIcon(instance, 'exitfullscreen');\n })\n }\n\n\n plyrTimeUpdate(): void {\n let common = this;\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('timeupdate', function LTPlayerDesktopTimeUpdate(event) {\n common.timeUpdate(event);\n if (instance.playerConfig.getPreload().isActive) {\n common.preloadPoster.timeUpdate(instance, 'event');\n }\n })\n }\n\n plyrOnPlay() {\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('play', function LTPlayerDesktopTimeUpdate(event) {\n instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');\n })\n }\n\n plyrOnPause() {\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('pause', function LTPlayerDesktopTimeUpdate(event) {\n instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');\n })\n }\n\n}\n","import {LTPlayerEventsManager} from \"../LTPlayerEventsManager\";\nimport {LTPlayerCommon} from \"./LTPlayerCommon\";\nimport {EventsInterfaces} from \"../../global/interfaces/EventsInterfaces\";\nimport {LTPlayer} from \"../LTPlayerType\";\nimport Plyr from \"plyr\";\nimport {plyr} from \"../../global/types/ModuleTypes\";\n\nexport class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {\n\n setup(eventManager: LTPlayerEventsManager) {\n this.player = eventManager.player;\n this.plyr = eventManager.plyr;\n\n //init common events\n this.playerPlay();\n this.removeMobilePlyrEvents();\n\n //init mobile events\n this.plyrOnReady();\n this.plyrEmbedOnReady();\n this.plyrEndVideo();\n this.plyrFullScreen();\n this.plyrTimeUpdate();\n this.plyrOnPlay();\n this.plyrOnPause();\n }\n\n plyrOnReady(): void {\n let eventManager = this;\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('ready', function LTPLayerMobileReady() {\n\n if (!instance.playerConfig.getPlayerId()) {\n instance.playerConfig.setPlayerId((instance.plyr as plyr).id);\n instance.playerId = instance.playerConfig.getPlayerId();\n }\n\n if (instance.plyr.isHTML5) {\n eventManager.onReadyPlayer();\n instance.posterManager.mobileEvents.buttons(instance);\n\n instance.playerControl.mobileEvents.seekBar(instance);\n\n if (instance.playerConfig.getPreload()) {\n eventManager.preloadPoster.ready(instance);\n }\n }\n\n eventManager.setDefaultSettingsConfig();\n\n instance.posterManager.mobileEvents.showControls(instance);\n\n instance.playerControl.mobileEvents.controlsTimeShow(instance);\n\n //set play/pause icon\n instance.playerControl.mobileEvents.playPauseIcon(instance, 'ready');\n\n //set rewind/forward\n instance.playerControl.mobileEvents.backwardForward(instance);\n instance.playerControl.mobileEvents.backwardForwardSeconds(instance);\n\n //set volume controller\n instance.playerControl.mobileEvents.volume(instance);\n\n //set settings controller\n instance.playerControl.settingsControlsManager.init(instance);\n\n //set chapters buttons\n if (instance.playerControl.chaptersService) {\n instance.playerControl.chaptersService.setMobileButtonEvents(instance);\n }\n })\n }\n\n plyrEmbedOnReady(): void {\n let eventManager = this;\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n if (plyr.isEmbed) {\n plyr.on('ready', function LTPLayerMobileReadyEmbed() {\n plyr.embed.ready().then(function LTPlayerEmbedReady() {\n eventManager.onReadyPlayer();\n instance.playerControl.mobileEvents.seekBar(instance);\n instance.posterManager.mobileEvents.buttons(instance);\n if (instance.playerConfig.getPreload()) {\n eventManager.preloadPoster.ready(instance);\n }\n })\n });\n }\n }\n\n plyrEndVideo() {\n let eventManager = this;\n let plyr: Plyr = this.plyr;\n\n plyr.on('ended', function LTPlayerMobileEndVideo() {\n eventManager.endVideo();\n })\n }\n\n plyrFullScreen(): void {\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('enterfullscreen', function LTPlayerDesktopEnterFullScreen() {\n //fullscreen icon\n instance.playerControl.desktopEvents.fullscreenIcon(instance, 'enterfullscreen');\n\n });\n\n plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen() {\n //fullscreen icon\n instance.playerControl.desktopEvents.fullscreenIcon(instance, 'exitfullscreen');\n })\n }\n\n plyrTimeUpdate(): void {\n let eventManager = this;\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('timeupdate', function LTPlayerMobileTimeUpdate(event) {\n\n if (instance.playerConfig.getPreload().isActive) {\n eventManager.preloadPoster.timeUpdate(instance, 'event');\n }\n\n eventManager.timeUpdate(event);\n\n instance.playerControl.mobileEvents.removePlyrControlsClass(instance);\n })\n }\n\n plyrOnPlay() {\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('play', function LTPlayerDesktopTimeUpdate(event) {\n instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');\n })\n }\n\n plyrOnPause() {\n let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;\n let plyr: Plyr = this.plyr;\n\n plyr.on('pause', function LTPlayerDesktopTimeUpdate(event) {\n instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');\n })\n }\n\n setMobileEvent = (selector: Element): undefined | HammerManager => {\n let instance = this;\n\n //check if getDevice is mobile or desktop\n if (instance.player.playerConfig.getDevice() === 'mobile') {\n\n const manager = new Hammer.Manager(selector);\n\n manager.add(new Hammer.Pan({\n direction : 30\n }))\n\n manager.add(new Hammer.Tap({\n event : 'triepletap',\n taps : 3\n }));\n\n manager.add(new Hammer.Tap({\n event : 'doubletap',\n taps : 2\n }));\n\n manager.add( new Hammer.Tap({\n event : 'singletap'\n }));\n\n manager.get('doubletap').recognizeWith('singletap');\n manager.get('singletap').requireFailure('doubletap');\n manager.get('triepletap').recognizeWith('doubletap');\n manager.get('doubletap').requireFailure('triepletap');\n manager.get('pan').set({direction: Hammer.DIRECTION_DOWN})\n\n return manager;\n }\n\n return undefined;\n }\n\n}\n","import Plyr from \"plyr\";\nimport {LTPlayer} from \"./LTPlayerType\";\nimport 'hammerjs'\nimport {LTPlayerDesktop} from \"./events/LTPlayerDesktop\";\nimport {LTPlayerMobile} from \"./events/LTPlayerMobile\";\n\n/**\n * LTPlayer events namespace\n */\nexport class LTPlayerEventsManager {\n player: LTPlayer.PortraitType | LTPlayer.LandscapeType\n plyr: Plyr\n desktopEvents: LTPlayerDesktop\n mobileEvents: LTPlayerMobile\n\n constructor(player: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n this.player = player;\n this.plyr = player.plyr;\n this.setup();\n }\n\n setup() {\n if (this.player.playerConfig.getDevice() === 'mobile') {\n this.mobileEvents = new LTPlayerMobile();\n this.mobileEvents.setup(this);\n } else {\n this.desktopEvents = new LTPlayerDesktop();\n this.desktopEvents.setup(this);\n }\n }\n}\n","import {LTPlayer} from \"../LTPlayerType\";\nimport {PlyrEvent} from \"plyr\";\n\nexport namespace LTPlayerEvents {\n export class Desktop {\n playPause(plyrEvent: PlyrEvent) {\n const players = window.Player.players;\n const currentPlayPlayer = plyrEvent.detail.plyr;\n\n players.forEach( player => {\n if (player.plyr != currentPlayPlayer) {\n player.plyr.pause();\n\n player.plyr.on('ready', () => {\n const playerContainer = player.plyr.elements.container;\n\n const miniPlayerControls = playerContainer.querySelector('.lt-player-mini-player-controls');\n\n if (miniPlayerControls) {\n miniPlayerControls.remove();\n }\n\n const miniPlayersBackground = playerContainer.querySelector('.lt-player-mini-player-background');\n\n if (miniPlayersBackground) {\n miniPlayersBackground.remove();\n }\n\n const miniPlayerEnable = playerContainer.querySelector('.lt-player-mini-enable');\n\n if (miniPlayerEnable) {\n miniPlayerEnable.classList.remove('lt-player-mini-enable');\n }\n\n })\n\n }\n })\n\n }\n\n endVideo(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {\n\n let player = instance.plyr;\n const playerContainer = player.elements.container;\n\n const disableControls = () => {\n const controls = player.elements.controls;\n\n if (controls.classList.contains('plyr__controls-enable')) {\n controls.classList.remove('plyr__controls-enable')\n }\n }\n const enablePoster = () => {\n\n const customPoster = playerContainer.querySelector('.lt-player__poster');\n const controls = playerContainer.querySelector('.plyr__controls');\n const playerPosterImage = playerContainer.querySelector('.lt-player__poster__image-body');\n\n playerContainer.classList.add('plyr--stopped')\n customPoster.classList.remove('d-none');\n controls.classList.add('d-none');\n\n if (playerPosterImage) {\n playerPosterImage.classList.remove('lt-player__poster__image-body--preload');\n }\n\n if (!player.poster) {\n player.poster = instance.playerConfig.getPosterImage();\n }\n\n }\n\n const disableSettings = () => {\n\n const settingsBody = playerContainer.querySelector('.settings-controllers');\n\n if (!settingsBody) {\n return;\n }\n\n if (settingsBody.classList.contains('settings-controllers-enable')) {\n\n const settingsBody = playerContainer.querySelector('.settings-controllers');\n player.elements.controls.classList.remove('plyr__controls-enable-settings')\n\n settingsBody.classList.remove('settings-controllers-enable');\n\n const background = document.querySelector('.settings-controllers-enable__background');\n\n if (!background.classList.contains('d-none')) {\n background.classList.add('d-none');\n }\n\n }\n }\n\n const exitMiniPLayer = () => {\n let miniPlayer = {\n controls : playerContainer.querySelector('.lt-player-mini-player-controls'),\n background: playerContainer.querySelector('.lt-player-mini-player-background'),\n enable: playerContainer.querySelector('.lt-player-mini-enable')\n };\n\n if (miniPlayer.controls) {\n miniPlayer.controls.remove();\n }\n\n if (miniPlayer.background) {\n miniPlayer.background.remove();\n }\n\n if (miniPlayer.enable) {\n miniPlayer.enable.classList.remove('lt-player-mini-enable')\n }\n }\n\n const exitFullScreen = () => {\n if (player.fullscreen.active) {\n player.fullscreen.exit();\n }\n }\n\n enablePoster();\n disableSettings();\n exitMiniPLayer();\n exitFullScreen();\n disableControls();\n\n if (!instance.plyr.elements.container.classList.contains('plyr__poster-enabled')) {\n instance.plyr.elements.container.classList.add('plyr__poster-enabled');\n }\n }\n\n }\n export class Mobile {\n\n }\n}\n","import {LTPlayerController} from \"../global/controllers/LTPlayerController\";\nimport {TypeInterface} from \"../global/interfaces/TypeInterface\";\nimport {defaultType, playerConfigType} from \"../global/types/ModuleTypes\";\nimport {LTPlayerMini} from \"./controls/LTPlayerMini\";\nimport {LTPlayerConfig} from \"./LTPlayerConfig\";\nimport Plyr from \"plyr\";\nimport {LTPlayerDevMethode} from \"./LTPlayerDevMethode\";\nimport {LTPlayerEventsManager} from \"./LTPlayerEventsManager\";\nimport {LTPLayerAddInfo} from \"./addInfo/LTPlayerAddInfoManager\";\nimport {LTPlayerEvents} from \"./events/LTPlayer\";\nimport {LTPlayerPosterManager} from \"./poster/LTPlayerPosterManager\";\n\nexport namespace LTPlayer {\n\n /**\n * Setup Portrait Type Player\n */\n export class PortraitType extends LTPlayerController implements TypeInterface {\n\n /**\n * Create a new Player instance root element\n * @returns never\n * @param configData\n * @param additionalInfoService\n */\n setup(configData: playerConfigType, additionalInfoService: LTPLayerAddInfo.Controller | null ): boolean {\n\n if (!configData) {\n return false;\n }\n this.setMobileEvents();\n this.setDesktopEvents();\n\n if (process.env.DEBUG === \"true\") {\n console.info(`Finish add events`);\n }\n\n this.additionalInfoService = additionalInfoService;\n this.miniPlayer = new LTPlayerMini();\n this.setPlayerConfig(configData.body);\n this.initSetupPlayerPoster(configData.body);\n this.initPlayer();\n this.setEvents();\n\n return true;\n }\n\n\n setEvents() {\n this.eventInstance = new LTPlayerEventsManager(this);\n }\n\n private initSetupPlayerPoster(configData: defaultType) {\n const playerContainer = configData.playerContainer;\n playerContainer.classList.add('d-none')\n const logo: string = this.iconService.getLogo();\n playerContainer.insertAdjacentHTML(\"afterend\", this.templateService.getOnloadPoster({logo: logo})) ;\n }\n\n setDesktopEvents() {\n this.desktopEvents = new LTPlayerEvents.Desktop();\n }\n\n setMobileEvents() {\n this.mobileEvents = new LTPlayerEvents.Mobile();\n }\n\n /**\n * Set Player config Instance\n * @param configData\n * @private\n */\n private setPlayerConfig(configData: playerConfigType) {\n this.playerConfig = new LTPlayerConfig(configData);\n }\n\n /**\n * Inner player template in parent dom element\n * @param config\n * @private\n */\n private innerPlayerTemplate(config: LTPlayerConfig) {\n const playerContainer: HTMLElement = this.playerConfig.getPlayerElementContainer();\n playerContainer.innerHTML = this.templateService.getTemplateByType(config);\n }\n\n /**\n * Get Controllers in HTML String Format\n * @return string\n * @private\n */\n private getPlayerControllers(): string {\n return this.playerControl.getControls(this.playerConfig, this.iconService)\n }\n\n /**\n * Start init player with config data\n * @private\n */\n private initPlayer() {\n\n this.innerPlayerTemplate(this.playerConfig);\n\n this.playerConfig.getPlayerElementContainer().classList.add(`lt-player-portrate--${this.playerConfig.getDevice()}`);\n\n\n let playerSettings = {};\n\n const controls = this.getPlayerControllers();\n\n Object.assign(playerSettings, {controls});\n\n\n if (this.playerConfig.getVideoType() === 'embedded') {\n Object.assign(playerSettings, this.playerConfig.getEmbedOrigin())\n }\n\n Object.assign(playerSettings, this.playerConfig.getDefaultConfigItems());\n\n Object.assign(playerSettings, {ratios : '9:16'});\n\n if (this.playerConfig.getFullscreenMode()) {\n Object.assign(playerSettings, this.playerConfig.getFullscreenMode());\n }\n\n const element = this.playerConfig.getPlayerElementContainer().querySelector('.embed_player');\n\n const player = new Plyr(element, playerSettings)\n\n const chapters = this.playerConfig.getChapters();\n\n if (chapters) {\n this.playerControl.initChapters(this.playerConfig.getChapters());\n }\n\n this.plyr = player;\n\n this.devMethodePlayer = new LTPlayerDevMethode.Player(player);\n\n this.posterManager.init(this);\n\n if (this.playerConfig.getShareData()) {\n this.share.init(this);\n }\n\n if (this.playerConfig.getDevice() !== 'mobile') {\n this.miniPlayer.init(player, this.templateService, this.iconService);\n }\n }\n\n play() {\n this.devMethodePlayer.play();\n }\n\n pause() {\n this.devMethodePlayer.pause();\n }\n\n stop() {\n this.devMethodePlayer.stop();\n }\n\n preload() {\n return this.devMethodePreload;\n }\n\n destruct() {\n let _this = this;\n\n return new Promise((resolve) => {\n _this.additionalInfoService.remove(this);\n\n _this.additionalInfoService = null;\n\n this.plyr.destroy(() => {\n _this = undefined;\n resolve(true);\n })\n })\n }\n }\n\n\n export class LandscapeType extends LTPlayerController implements TypeInterface {\n /**\n * Create a new Video Player root element\n * @returns never\n * @param configData\n * @param additionalInfoService\n */\n setup(configData: playerConfigType, additionalInfoService: LTPLayerAddInfo.Controller | null): boolean {\n\n if (!configData) {\n return false;\n }\n\n if (additionalInfoService) {\n console.warn('Additional Info is not implemented for Landscape type!')\n }\n\n this.setDesktopEvents();\n this.setMobileEvents();\n\n if (process.env.DEBUG === \"true\") {\n console.info(`Finish add events`);\n }\n\n this.miniPlayer = new LTPlayerMini();\n this.setPlayerConfig(configData.body);\n this.initPoster(configData.body);\n this.initPlayer();\n this.setEvents();\n\n return true;\n }\n\n setEvents() {\n this.eventInstance = new LTPlayerEventsManager(this);\n }\n\n private initPlayer() {\n\n this.innerPlayerTemplate(this.playerConfig);\n\n this.playerConfig.getPlayerElementContainer().classList.add(`lt-player-landscape--${this.playerConfig.getDevice()}`);\n\n let playerSettings = {};\n\n const controls = this.getPlayerControllers();\n\n Object.assign(playerSettings, {controls});\n\n if (this.playerConfig.getVideoType() === 'embedded') {\n Object.assign(playerSettings, this.playerConfig.getEmbedOrigin())\n }\n\n Object.assign(playerSettings, this.playerConfig.getDefaultConfigItems());\n\n Object.assign(playerSettings, {ratios : '16:9'});\n\n if (this.playerConfig.getFullscreenMode()) {\n Object.assign(playerSettings, this.playerConfig.getFullscreenMode());\n }\n\n const element = this.playerConfig.getPlayerElementContainer().querySelector('.embed_player');\n\n const player = new Plyr(element, playerSettings);\n\n const chapters = this.playerConfig.getChapters();\n\n if (chapters) {\n this.playerControl.initChapters(this.playerConfig.getChapters());\n }\n\n this.plyr = player;\n\n this.devMethodePlayer = new LTPlayerDevMethode.Player(player);\n\n this.posterManager.init(this);\n\n if (this.playerConfig.getShareData()) {\n this.share.init(this);\n }\n\n if (this.playerConfig.getDevice() !== 'mobile') {\n this.miniPlayer.init(player, this.templateService, this.iconService);\n }\n }\n\n private getPlayerControllers(): string {\n return this.playerControl.getControls(this.playerConfig, this.iconService)\n }\n\n private innerPlayerTemplate(config: LTPlayerConfig) {\n const playerContainer: HTMLElement = this.playerConfig.getPlayerElementContainer();\n playerContainer.innerHTML = this.templateService.getTemplateByType(config);\n }\n\n initPoster(configData: defaultType) {\n const playerContainer = configData.playerContainer;\n playerContainer.classList.add('d-none')\n const logo: string = this.iconService.getLogo();\n playerContainer.insertAdjacentHTML(\"afterend\", this.templateService.getOnloadPoster({logo: logo})) ;\n }\n\n private setPlayerConfig(configData: playerConfigType) {\n this.playerConfig = new LTPlayerConfig(configData);\n }\n\n public getPlayer() {\n return this.plyr;\n }\n\n destruct() {\n }\n setDesktopEvents() {\n this.desktopEvents = new LTPlayerEvents.Desktop();\n }\n\n setMobileEvents() {\n this.mobileEvents = new LTPlayerEvents.Mobile();\n }\n }\n}\n","/* eslint max-len: 0 */\nexport default {\n // validation errors\n AdditionalItemsError: \"Array at `{{pointer}}` may not have an additional item `{{key}}`\",\n AdditionalPropertiesError: \"Additional property `{{property}}` on `{{pointer}}` does not match schema `{{schema}}`\",\n AllOfError: \"Value `{{value}}` at `{{pointer}}` does not match schema of `{{allOf}}`\",\n AnyOfError: \"Value `{{value}}` at `{{pointer}}` does not match any schema of `{{anyOf}}`\",\n ConstError: \"Expected value at `{{pointer}}` to be `{{expected}}`, but value given is `{{value}}`\",\n containsAnyError: \"The array at `{{pointer}}` must contain at least one item\",\n ContainsArrayError: \"The property at `{{pointer}}` must not be an array\",\n ContainsError: \"The array at `{{pointer}}` must contain an element that matches `{{schema}}`\",\n EnumError: \"Expected given value `{{value}}` in `{{pointer}}` to be one of `{{values}}`\",\n FormatDateError: \"Value `{{value}}` at `{{pointer}}` is not a valid date\",\n FormatDateTimeError: \"Value `{{value}}` at `{{pointer}}` is not a valid date-time\",\n FormatEmailError: \"Value `{{value}}` at `{{pointer}}` is not a valid email\",\n FormatHostnameError: \"Value `{{value}}` at `{{pointer}}` is not a valid hostname\",\n FormatIPV4Error: \"Value `{{value}}` at `{{pointer}}` is not a valid IPv4 address\",\n FormatIPV4LeadingZeroError: \"IPv4 addresses starting with zero are invalid, since they are interpreted as octals\",\n FormatIPV6Error: \"Value `{{value}}` at `{{pointer}}` is not a valid IPv6 address\",\n FormatIPV6LeadingZeroError: \"IPv6 addresses starting with zero are invalid, since they are interpreted as octals\",\n FormatJSONPointerError: \"Value `{{value}}` at `{{pointer}}` is not a valid json-pointer\",\n FormatRegExError: \"Value `{{value}}` at `{{pointer}}` is not a valid regular expression\",\n FormatTimeError: \"Value `{{value}}` at `{{pointer}}` is not a valid time\",\n FormatURIError: \"Value `{{value}}` at `{{pointer}}` is not a valid uri\",\n FormatURIReferenceError: \"Value `{{value}}` at `{{pointer}}` is not a valid uri-reference\",\n FormatURITemplateError: \"Value `{{value}}` at `{{pointer}}` is not a valid uri-template\",\n FormatURLError: \"Value `{{value}}` at `{{pointer}}` is not a valid url\",\n InvalidDataError: \"No value may be specified in `{{pointer}}`\",\n InvalidPropertyNameError: \"Invalid property name `{{property}}` at `{{pointer}}`\",\n MaximumError: \"Value in `{{pointer}}` is `{{length}}`, but should be `{{maximum}}` at maximum\",\n MaxItemsError: \"Too many items in `{{pointer}}`, should be `{{maximum}}` at most, but got `{{length}}`\",\n MaxLengthError: \"Value `{{pointer}}` should have a maximum length of `{{maxLength}}`, but got `{{length}}`.\",\n MaxPropertiesError: \"Too many properties in `{{pointer}}`, should be `{{maximum}}` at most, but got `{{length}}`\",\n MinimumError: \"Value in `{{pointer}}` is `{{length}}`, but should be `{{minimum}}` at minimum\",\n MinItemsError: \"Too few items in `{{pointer}}`, should be at least `{{minimum}}`, but got `{{length}}`\",\n MinItemsOneError: \"At least one item is required in `{{pointer}}`\",\n MinLengthError: \"Value `{{pointer}}` should have a minimum length of `{{minLength}}`, but got `{{length}}`.\",\n MinLengthOneError: \"A value is required in `{{pointer}}`\",\n MinPropertiesError: \"Too few properties in `{{pointer}}`, should be at least `{{minimum}}`, but got `{{length}}`\",\n MissingDependencyError: \"The required propery '{{missingProperty}}' in `{{pointer}}` is missing\",\n MissingOneOfPropertyError: \"Value at `{{pointer}}` property: `{{property}}`\",\n MultipleOfError: \"Expected `{{value}}` in `{{pointer}}` to be multiple of `{{multipleOf}}`\",\n MultipleOneOfError: \"Value `{{value}}` should not match multiple schemas in oneOf `{{matches}}`\",\n NoAdditionalPropertiesError: \"Additional property `{{property}}` in `{{pointer}}` is not allowed\",\n NotError: \"Value `{{value}}` at pointer should not match schema `{{not}}`\",\n OneOfError: \"Value `{{value}}` in `{{pointer}}` does not match any given oneof schema\",\n OneOfPropertyError: \"Failed finding a matching oneOfProperty schema in `{{pointer}}` where `{{property}}` matches `{{value}}`\",\n PatternError: \"Value in `{{pointer}}` should match `{{description}}`, but received `{{received}}`\",\n PatternPropertiesError: \"Property `{{key}}` does not match any patterns in `{{pointer}}`. Valid patterns are: {{patterns}}\",\n RequiredPropertyError: \"The required property `{{key}}` is missing at `{{pointer}}`\",\n TypeError: \"Expected `{{value}}` ({{received}}) in `{{pointer}}` to be of type `{{expected}}`\",\n UndefinedValueError: \"Value must not be undefined in `{{pointer}}`\",\n UniqueItemsError: \"Expected unique items in {{pointer}}: duplicate value `{{value}}` found at {{itemPointer}} and {{duplicatePointer}}\",\n UnknownPropertyError: \"Could not find a valid schema for property `{{pointer}}` within object\",\n ValueNotEmptyError: \"A value for `{{property}}` is required at `{{pointer}}`\"\n};\n","import strings from \"../config/strings\";\nimport render from \"./render\";\n/**\n * Renders the given string as defined in __@see config/strings.js__\n * @param keyword\n * @param data - template data\n * @param fallback - fallback template\n * @return resulting string\n */\nexport default function __(keyword, data, fallback = keyword) {\n const template = strings[keyword] || fallback;\n return render(template, data);\n}\n","/**\n * Renders data into a string by {{variables}}.\n * Given a template string, removes all {{property}} substrings and replaces them with the property in the given data\n *\n * @param template - template string containing variables in handelbars/mustache style\n * @param data - flat object containing properties matching variables\n * @return rendered string\n */\nexport default function render(template, data = {}) {\n return template.replace(/\\{\\{\\w+\\}\\}/g, match => data[match.replace(/[{}]/g, \"\")]);\n}\n","import __ from \"./__\";\nfunction dashCase(text) {\n return text.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\nexport function createError(name, data) {\n return {\n type: \"error\",\n name,\n code: dashCase(name),\n message: __(name, data),\n data\n };\n}\n/**\n * Creates a custom Error-Constructor which instances may be identified by `customError instanceof Error`. Its messages\n * are defined by strings-object @see config/strings.ts\n *\n * @param name - id of error (camelcased)\n * @return error constructor function\n */\nexport function createCustomError(name) {\n return createError.bind(null, name);\n}\n","const toString = Object.prototype.toString;\nexport default function getTypeOf(value) {\n const type = toString\n .call(value)\n .match(/\\s([^\\]]+)\\]/)\n .pop()\n .toLowerCase();\n if (type === \"file\") {\n return \"object\";\n }\n return type;\n}\n","/**\n * ts type guard for json error\n * @returns true if passed type is a JSONError\n */\nexport function isJSONError(error) {\n return (error === null || error === void 0 ? void 0 : error.type) === \"error\";\n}\n","import { isJSONError } from \"../types\";\nexport function isPromise(obj) {\n return obj instanceof Promise;\n}\nexport function errorOrPromise(error) {\n return isJSONError(error) || isPromise(error);\n}\nexport function errorsOnly(error) {\n return isJSONError(error);\n}\n","export default function flattenArray(list, result = []) {\n for (let i = 0; i < list.length; i += 1) {\n const item = list[i];\n if (Array.isArray(item)) {\n flattenArray(item, result);\n }\n else {\n result.push(item);\n }\n }\n return result;\n}\n","export default {\n DECLARATOR_ONEOF: \"oneOfProperty\",\n GET_TEMPLATE_RECURSION_LIMIT: 1,\n floatingPointPrecision: 10000,\n propertyBlacklist: [\"_id\"]\n};\n","import { errorOrPromise } from \"./utils/filter\";\nimport flattenArray from \"./utils/flattenArray\";\nimport settings from \"./config/settings\";\nimport { isJSONError } from \"./types\";\nconst { DECLARATOR_ONEOF } = settings;\n/**\n * Selects and returns a oneOf schema for the given data\n *\n * @param core - validator\n * @param data\n * @param schema - current json schema containing property oneOf\n * @param pointer - json pointer to data\n * @return oneOf schema or an error\n */\nexport default function resolveOneOf(core, data, schema = core.rootSchema, pointer = \"#\") {\n // !keyword: oneOfProperty\n // an additional <DECLARATOR_ONEOF> (default `oneOfProperty`) on the schema will exactly determine the\n // oneOf value (if set in data)\n // @fixme\n // abort if no data is given an DECLARATOR_ONEOF is set (used by getChildSchemaSelection)\n // this case (data != null) should not be necessary\n if (data != null && schema[DECLARATOR_ONEOF]) {\n const errors = [];\n const oneOfProperty = schema[DECLARATOR_ONEOF];\n const oneOfValue = data[schema[DECLARATOR_ONEOF]];\n if (oneOfValue === undefined) {\n return core.errors.missingOneOfPropertyError({ property: oneOfProperty, pointer });\n }\n for (let i = 0; i < schema.oneOf.length; i += 1) {\n const one = core.resolveRef(schema.oneOf[i]);\n const oneOfPropertySchema = core.step(oneOfProperty, one, data, pointer);\n if (isJSONError(oneOfPropertySchema)) {\n return oneOfPropertySchema;\n }\n let result = flattenArray(core.validate(oneOfValue, oneOfPropertySchema, pointer));\n result = result.filter(errorOrPromise);\n if (result.length > 0) {\n errors.push(...result);\n }\n else {\n return one; // return resolved schema\n }\n }\n return core.errors.oneOfPropertyError({\n property: oneOfProperty,\n value: oneOfValue,\n pointer,\n errors\n });\n }\n const matches = [];\n const errors = [];\n for (let i = 0; i < schema.oneOf.length; i += 1) {\n const one = core.resolveRef(schema.oneOf[i]);\n let result = flattenArray(core.validate(data, one, pointer));\n result = result.filter(errorOrPromise);\n if (result.length > 0) {\n errors.push(...result);\n }\n else {\n matches.push(one);\n }\n }\n if (matches.length === 1) {\n return matches[0];\n }\n if (matches.length > 1) {\n return core.errors.multipleOneOfError({\n value: data,\n pointer,\n matches\n });\n }\n return core.errors.oneOfError({\n value: JSON.stringify(data),\n pointer,\n oneOf: schema.oneOf,\n errors\n });\n}\n","export default (value) => JSON.parse(JSON.stringify(value));\n","import deepmerge from \"deepmerge\";\nconst overwriteMerge = (destinationArray, sourceArray) => sourceArray;\n/**\n * returns a new json-schema, where properties are combined and arrays are replaced\n */\nexport default (a, b) => deepmerge(a, b, { arrayMerge: overwriteMerge });\n// var d = c.filter((item, pos) => c.indexOf(item) === pos)\nconst mergeUniqueItems = (destinationArray, sourceArray) => {\n const all = destinationArray.concat(sourceArray);\n return all.filter((item, pos) => all.indexOf(item) === pos);\n};\n/**\n * returns a new json-schema, where properties are combined and arrays are replaced\n */\nexport const mergeArraysUnique = (a, b) => deepmerge(a, b, { arrayMerge: mergeUniqueItems });\n","/**\n * resolveAllOf is tricky:\n *\n * resolve all merges all schemas altough each schema in the list must be used\n * for validation. But to use this as a template schema to create data and a\n * resolved schema, structural data must be merged. Currently, it is merged in\n * all case, but separately validated and resolved. This will break at some\n * point, requiring us to be more specific on our current intent (validation\n * vs get (resolved) schema)\n */\nimport copy from \"./utils/copy\";\nimport { mergeArraysUnique } from \"./utils/merge\";\n/**\n * resolves schema\n * when complete this will have much duplication to step.object etc\n */\nfunction resolveSchema(draft, schemaToResolve, data) {\n var _a;\n const schema = { ...((_a = draft.resolveRef(schemaToResolve)) !== null && _a !== void 0 ? _a : {}) };\n // @draft >= 07\n if (schema.if && (schema.then || schema.else)) {\n const isValid = draft.isValid(data, schema.if);\n if (isValid && schema.then) {\n return resolveSchema(draft, schema.then, data);\n }\n if (!isValid && schema.else) {\n return resolveSchema(draft, schema.else, data);\n }\n delete schema.if;\n delete schema.then;\n delete schema.else;\n }\n return schema;\n}\nexport default function resolveAllOf(draft, data, schema = draft.rootSchema, pointer = \"#\") {\n let mergedSchema = copy(schema);\n for (let i = 0; i < schema.allOf.length; i += 1) {\n const allOfSchema = resolveSchema(draft, schema.allOf[i], data);\n mergedSchema = mergeArraysUnique(mergedSchema, allOfSchema);\n data = draft.getTemplate(data, mergedSchema);\n }\n delete mergedSchema.allOf;\n return mergedSchema;\n}\n","import { errorOrPromise } from \"./utils/filter\";\nimport flattenArray from \"./utils/flattenArray\";\nimport getTypeOf from \"./getTypeOf\";\nimport settings from \"./config/settings\";\nimport { isJSONError } from \"./types\";\nconst { DECLARATOR_ONEOF } = settings;\n/**\n * Returns a ranking for the data and given schema\n *\n * @param core\n * @param - json schema type: object\n * @param data\n * @param [pointer]\n * @return ranking value (higher is better)\n */\nfunction fuzzyObjectValue(core, one, data, pointer) {\n if (data == null || one.properties == null) {\n return -1;\n }\n let value = 0;\n const keys = Object.keys(one.properties);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (data[key] != null && core.isValid(data[key], one.properties[key], pointer)) {\n value += 1;\n }\n }\n return value;\n}\n/**\n * Selects and returns a oneOf schema for the given data\n *\n * @param core\n * @param data\n * @param [schema] - current json schema containing property oneOf\n * @param [pointer] - json pointer to data\n * @return oneOf schema or an error\n */\nexport default function resolveOneOf(core, data, schema = core.rootSchema, pointer = \"#\") {\n // !keyword: oneOfProperty\n // an additional <DECLARATOR_ONEOF> (default `oneOfProperty`) on the schema will exactly determine the\n // oneOf value (if set in data)\n // @fixme\n // abort if no data is given an DECLARATOR_ONEOF is set (used by getChildSchemaSelection)\n // this case (data != null) should not be necessary\n if (data != null && schema[DECLARATOR_ONEOF]) {\n const errors = [];\n const oneOfProperty = schema[DECLARATOR_ONEOF];\n const oneOfValue = data[schema[DECLARATOR_ONEOF]];\n if (oneOfValue === undefined) {\n return core.errors.missingOneOfPropertyError({ property: oneOfProperty, pointer });\n }\n for (let i = 0; i < schema.oneOf.length; i += 1) {\n const one = core.resolveRef(schema.oneOf[i]);\n const oneOfPropertySchema = core.step(oneOfProperty, one, data, pointer);\n if (isJSONError(oneOfPropertySchema)) {\n return oneOfPropertySchema;\n }\n let result = flattenArray(core.validate(oneOfValue, oneOfPropertySchema, pointer));\n result = result.filter(errorOrPromise);\n if (result.length > 0) {\n errors.push(...result);\n }\n else {\n return one; // return resolved schema\n }\n }\n return core.errors.oneOfPropertyError({\n property: oneOfProperty,\n value: oneOfValue,\n pointer,\n errors\n });\n }\n // keyword: oneOf\n const matches = [];\n for (let i = 0; i < schema.oneOf.length; i += 1) {\n const one = core.resolveRef(schema.oneOf[i]);\n if (core.isValid(data, one, pointer)) {\n matches.push(one);\n }\n }\n if (matches.length === 1) {\n return matches[0];\n }\n // fuzzy match oneOf\n if (getTypeOf(data) === \"object\") {\n let schemaOfItem;\n let fuzzyGreatest = 0;\n for (let i = 0; i < schema.oneOf.length; i += 1) {\n const one = core.resolveRef(schema.oneOf[i]);\n const fuzzyValue = fuzzyObjectValue(core, one, data);\n if (fuzzyGreatest < fuzzyValue) {\n fuzzyGreatest = fuzzyValue;\n schemaOfItem = schema.oneOf[i];\n }\n }\n if (schemaOfItem === undefined) {\n return core.errors.oneOfError({\n value: JSON.stringify(data),\n pointer,\n oneOf: schema.oneOf\n });\n }\n return schemaOfItem;\n }\n if (matches.length > 1) {\n return core.errors.multipleOneOfError({ matches, data, pointer });\n }\n return core.errors.oneOfError({ value: JSON.stringify(data), pointer, oneOf: schema.oneOf });\n}\n","import gp from \"@sagold/json-pointer\";\nimport { isJSONError } from \"./types\";\nconst emptyObject = {};\n/**\n * Returns the json-schema of a data-json-pointer.\n *\n * Notes\n * - Uses draft.step to walk through data and schema\n *\n * @param draft\n * @param pointer - json pointer in data to get the json schema for\n * @param [data] - the data object, which includes the json pointers value. This is optional, as\n * long as no oneOf, anyOf, etc statement is part of the pointers schema\n * @param [schema] - the json schema to iterate. Defaults to draft.rootSchema\n * @return json schema object of the json-pointer or an error\n */\nexport default function getSchema(draft, pointer, data, schema = draft.rootSchema) {\n const frags = gp.split(pointer);\n schema = draft.resolveRef(schema);\n return _get(draft, schema, frags, pointer, data);\n}\nfunction _get(draft, schema, frags, pointer, data = emptyObject) {\n if (frags.length === 0) {\n return draft.resolveRef(schema);\n }\n const key = frags.shift(); // step key\n schema = draft.step(key, schema, data, pointer); // step schema\n if (isJSONError(schema)) {\n return schema;\n }\n // @ts-ignore\n data = data[key]; // step data\n return _get(draft, schema, frags, `${pointer}/${key}`, data);\n}\n","export const propertyRegex = \"[^?/{}*,()#]+\";\n// W3C ENBF grammar\n// https://github.com/lys-lang/node-ebnf/blob/master/test/W3CEBNF.spec.ts\n// https://www.w3.org/TR/xml/#sec-notation\nexport const jsonQueryGrammar = `\nroot ::= (\"#\" recursion | recursion | (query | pattern) recursion* | \"#\" SEP? | SEP)\nrecursion ::= (SEP query | pattern)*\n\nquery ::= (ESC escaped ESC | property | all | any | regex) typecheck? lookahead?\nproperty ::= ${propertyRegex}\nregex ::= \"{\" [^}]+ \"}\"\nSEP ::= \"/\"\nall ::= \"**\"\nany ::= \"*\"\n\ntypecheck ::= \"?:\" (\"value\" | \"boolean\" | \"string\" | \"number\" | \"object\" | \"array\")\nlookahead ::= \"?\" expression ((andExpr | orExpr) expression)*\nandExpr ::= S? \"&&\" S?\norExpr ::= S? \"||\" S?\n\nexpression ::= (exprProperty | ESC escaped ESC) ((isnot | is) (exprProperty | regex | ESC escaped ESC))*\nexprProperty ::= [a-zA-Z0-9-_ $]+\nescaped ::= [^\"]+\nis ::= \":\"\nisnot ::= \":!\"\nESC ::= '\"'\n\npattern ::= S? \"(\" (SEP query | pattern (orPattern? pattern)*)* \")\" quantifier? S? lookahead?\nquantifier ::= \"+\" | \"*\" | [0-9]+\norPattern ::= S? \",\" S?\n\nS ::= [ ]*\n`;\n","import EBNF from \"ebnf/dist/Grammars/W3CEBNF\";\nimport { jsonQueryGrammar } from \"./jsonQueryGrammar\";\nconst valid = /(children|text|type|start|end|rest|errors|fullText|\\d+)/;\nconst subset = /(children|text|type|\\d+)/;\nconst toJSON = (ast) => JSON.stringify(ast, (key, value) => (key === \"\" || valid.test(key) ? value : undefined), 2);\nconst toSmallJSON = (ast) => JSON.stringify(ast, (key, value) => key === \"\" || (key === \"rest\" && value !== \"\") || subset.test(key)\n ? value\n : undefined, 2);\nconst parser = new EBNF.Parser(jsonQueryGrammar);\nexport const parse = (query) => parser.getAST(query);\nexport const reduce = (ast) => JSON.parse(toSmallJSON(ast));\nexport { toJSON };\n","const join = (a, b) => `${a}/${b}`;\nimport { VALUE_INDEX, POINTER_INDEX } from \"./keys\";\nconst toString = Object.prototype.toString;\nconst rContainer = /Object|Array/;\nconst isContainer = (v) => rContainer.test(toString.call(v));\nconst getTypeOf = (v) => toString\n .call(v)\n .match(/\\s([^\\]]+)\\]/)\n .pop()\n .toLowerCase();\nfunction nodeAsRegex(node) {\n return new RegExp(node.text.replace(/(^{|}$)/g, \"\"));\n}\n/**\n * Iterates over object or array, passing each key, value and parentObject to the callback\n * @param value - to iterate\n * @param callback - receiving key on given input value\n */\nfunction forEach(parent, callback) {\n if (Array.isArray(parent)) {\n parent.forEach(callback);\n }\n else if (Object.prototype.toString.call(parent) === \"[object Object]\") {\n Object.keys(parent).forEach(function (key) {\n callback(parent[key], key, parent);\n });\n }\n}\n/**\n * Returns all keys of the given input data\n * @param value\n * @return {Array} containing keys of given value\n */\nfunction getKeys(value) {\n if (Array.isArray(value)) {\n return value.map(function (value, index) {\n return `${index}`;\n });\n }\n if (Object.prototype.toString.call(value) === \"[object Object]\") {\n return Object.keys(value);\n }\n return [];\n}\nconst cache = {\n mem: [],\n get(entry, prop) {\n const v = entry[VALUE_INDEX][prop];\n if (cache.mem.includes(v)) {\n return undefined;\n }\n if (isContainer(v)) {\n cache.mem.push(v);\n }\n return [v, prop, entry[VALUE_INDEX], join(entry[POINTER_INDEX], prop)];\n },\n reset() {\n cache.mem.length = 0;\n },\n};\nconst expand = {\n any(node, entry) {\n const value = entry[VALUE_INDEX];\n return (getKeys(value)\n // .map(prop => cache.get(entry, prop));\n .map((prop) => [\n value[prop],\n prop,\n value,\n join(entry[POINTER_INDEX], prop),\n ]));\n },\n all(node, entry) {\n const result = [entry];\n forEach(entry[VALUE_INDEX], (value, prop) => {\n const childEntry = cache.get(entry, prop);\n // const childEntry = [value, prop, entry[VALUE_INDEX], join(entry[POINTER_INDEX], prop)];\n childEntry && result.push(...expand.all(node, childEntry));\n });\n return result;\n },\n regex(node, entry) {\n const regex = nodeAsRegex(node);\n const value = entry[VALUE_INDEX];\n return getKeys(value)\n .filter((prop) => regex.test(prop))\n .map((prop) => [\n value[prop],\n prop,\n value,\n join(entry[POINTER_INDEX], prop),\n ]);\n },\n};\nconst select = {\n // alias to property (but escaped)\n escaped: (node, entry) => select.property(node, entry),\n property: (node, entry) => {\n const prop = node.text;\n if (entry[VALUE_INDEX] && entry[VALUE_INDEX][prop] !== undefined) {\n return [\n entry[VALUE_INDEX][prop],\n prop,\n entry[VALUE_INDEX],\n join(entry[POINTER_INDEX], prop),\n ];\n }\n },\n typecheck: (node, entry) => {\n const checkedTyped = node.text.replace(/^\\?:/, \"\");\n if (checkedTyped === \"value\") {\n return isContainer(entry[VALUE_INDEX]) ? undefined : entry;\n }\n const type = getTypeOf(entry[VALUE_INDEX]);\n if (type === checkedTyped) {\n return entry;\n }\n },\n lookahead: (node, entry) => {\n let valid = true;\n let or = false;\n node.children.forEach((expr) => {\n if (expr.type === \"expression\") {\n const isValid = select.expression(expr, entry) !== undefined;\n valid = or === true ? valid || isValid : valid && isValid;\n }\n else {\n or = expr.type === \"orExpr\";\n }\n });\n return valid ? entry : undefined;\n },\n expression: (node, entry) => {\n const prop = node.children[0].text;\n const cmp = node.children[1];\n const test = node.children[2];\n const value = entry[VALUE_INDEX];\n if (isContainer(value) === false) {\n return undefined;\n }\n return expressionMatches(value[prop], cmp, test) ? entry : undefined;\n },\n};\nfunction expressionMatches(value, cmp, test) {\n if (cmp === undefined) {\n return value !== undefined;\n }\n let valid;\n const valueString = `${value}`;\n if (test.type === \"regex\") {\n const regex = nodeAsRegex(test);\n valid = regex.test(valueString);\n }\n else {\n valid = valueString === test.text;\n }\n if (cmp.type === \"isnot\") {\n valid = valid === false && value !== undefined;\n }\n return valid;\n}\nexport { expand, select, cache };\n","export const VALUE_INDEX = 0;\nexport const KEY_INDEX = 1;\nexport const PARENT_INDEX = 2;\nexport const POINTER_INDEX = 3;\n","import { expand, select, cache } from \"./nodes\";\nimport { VALUE_INDEX, KEY_INDEX, PARENT_INDEX, POINTER_INDEX } from \"./keys\";\nfunction collect(func, input, node, pointer) {\n const result = [];\n for (let i = 0, l = input.length; i < l; i += 1) {\n result.push(...func(node, input[i], node, pointer));\n }\n return result;\n}\nfunction reduce(func, input, node, pointer) {\n const result = [];\n for (let i = 0, l = input.length; i < l; i += 1) {\n const output = func(node, input[i], pointer);\n if (output) {\n result.push(output);\n }\n }\n return result;\n}\nfunction query(data, ast, pointer) {\n let result = data;\n ast.children.forEach((node) => {\n if (expand[node.type]) {\n result = collect(expand[node.type], result, node, pointer);\n }\n else if (select[node.type]) {\n result = reduce(select[node.type], result, node, pointer);\n }\n else {\n throw new Error(`Unknown filter ${node.type}`);\n }\n });\n return result;\n}\nfunction runPatternOnce(inputSet, ast, pointer) {\n const resultingSet = [];\n let workingSet = inputSet;\n ast.children.forEach((node) => {\n if (node.type === \"orPattern\") {\n resultingSet.push(...workingSet);\n workingSet = inputSet;\n return;\n }\n workingSet = runNode(workingSet, node, pointer);\n });\n resultingSet.push(...workingSet);\n return resultingSet;\n}\nfunction getIterationCount(quantifier) {\n if (quantifier == null) {\n return 1; // default, simple group\n }\n if (quantifier === \"*\" || quantifier === \"+\") {\n return Infinity;\n }\n const count = parseInt(quantifier);\n return isNaN(count) ? 1 : count;\n}\nfunction pattern(data, ast, pointer) {\n const result = [];\n const quantifier = ast.children.find((node) => node.type === \"quantifier\");\n const iterationCount = getIterationCount(quantifier && quantifier.text);\n let workingSet = data;\n if (quantifier && quantifier.text === \"*\") {\n result.push(...workingSet);\n }\n let count = 0;\n while (workingSet.length > 0 && count < iterationCount) {\n workingSet = runPatternOnce(workingSet, ast, pointer);\n result.push(...workingSet);\n count += 1;\n }\n return result;\n}\nfunction skip(data, ast, pointer) {\n let result = data;\n ast.children.forEach((n) => (result = runNode(result, n, pointer)));\n return result;\n}\nfunction runNode(data, ast, pointer) {\n let result;\n if (ast.type === \"query\") {\n result = query(data, ast, pointer);\n }\n else if (ast.type === \"pattern\") {\n result = pattern(data, ast, pointer);\n }\n else {\n result = skip(data, ast, pointer);\n }\n // after each query or pattern, reset the cache, to (re)enable nested queries\n cache.reset();\n cache.mem.push(data);\n return result;\n}\nexport function run(data, ast) {\n cache.reset();\n cache.mem.push(data);\n return runNode([[data, null, null, \"#\"]], ast);\n}\nexport { VALUE_INDEX, KEY_INDEX, PARENT_INDEX, POINTER_INDEX };\n","import { parse } from \"./parser\";\nimport { run, VALUE_INDEX, POINTER_INDEX } from \"./interpreter\";\nconst returnTypes = {\n value: (r) => r.map((e) => e[VALUE_INDEX]),\n pointer: (r) => r.map((e) => e[POINTER_INDEX]),\n all: (r) => r,\n map: (r) => {\n const map = {};\n r.forEach((e) => (map[e[POINTER_INDEX]] = e[VALUE_INDEX]));\n return map;\n },\n};\nexport var ReturnType;\n(function (ReturnType) {\n ReturnType[\"POINTER\"] = \"pointer\";\n ReturnType[\"VALUE\"] = \"value\";\n ReturnType[\"ALL\"] = \"all\";\n ReturnType[\"MAP\"] = \"map\";\n})(ReturnType || (ReturnType = {}));\n// export return types on function\nget.POINTER = ReturnType.POINTER;\nget.VALUE = ReturnType.VALUE;\nget.ALL = ReturnType.ALL;\nget.MAP = ReturnType.MAP;\n/**\n * Runs query on input data and returns the results\n * @param data - input data\n * @param queryString - json-query string\n * @param returnType - result format or a custom callback\n */\nexport function get(data, queryString, returnType = ReturnType.VALUE) {\n if (queryString == null) {\n return [];\n }\n queryString = queryString.replace(/(\\/$)/g, \"\");\n if (queryString === \"\") {\n queryString = \"#\";\n }\n const ast = parse(queryString);\n if (ast == null) {\n throw new Error(`empty ast for '${queryString}'`);\n }\n if (ast.rest !== \"\") {\n throw new Error(`Failed parsing queryString from: '${ast.rest}'`);\n }\n const result = run(data, ast);\n if (typeof returnType === \"function\") {\n return result.map((r) => returnType(...r));\n }\n else if (returnTypes[returnType]) {\n return returnTypes[returnType](result);\n }\n return result;\n}\n","import { parse } from \"./parser\";\nconst skip = [\"root\", \"recursion\"];\nfunction buildPath(node, path = []) {\n if (skip.includes(node.type)) {\n node.children.forEach((n) => buildPath(n, path));\n return path;\n }\n // remove escaped property quotes?\n path.push(node.text);\n return path;\n}\n/**\n * Returns queryString as a list of property-queries\n */\nexport function split(queryString) {\n if (queryString == null || queryString === \"\") {\n return [];\n }\n const ast = parse(queryString);\n // console.log(toJSON(ast, null, 2));\n return buildPath(ast);\n}\n","import { get, ReturnType } from \"./get\";\nimport { propertyRegex } from \"./parser/jsonQueryGrammar\";\nimport { split } from \"./split\";\nconst cp = (v) => JSON.parse(JSON.stringify(v));\nconst toString = Object.prototype.toString;\nconst getType = (v) => toString\n .call(v)\n .match(/\\s([^\\]]+)\\]/)\n .pop()\n .toLowerCase();\nconst isProperty = new RegExp(`^(\"[^\"]+\"|${propertyRegex})$`);\nconst ignoreTypes = [\"string\", \"number\", \"boolean\", \"null\"];\nconst isArray = /^\\[\\d*\\]$/;\nconst arrayHasIndex = /^\\[(\\d+)\\]$/;\nconst isEscaped = /^\".+\"$/;\nconst isArrayProp = /(^\\[\\d*\\]$|^\\d+$)/;\nfunction convertToIndex(index) {\n return parseInt(index.replace(/^(\\[|\\]$)/, \"\"));\n}\nfunction removeEscape(property) {\n return isEscaped.test(property)\n ? property.replace(/(^\"|\"$)/g, \"\")\n : property;\n}\nfunction insert(array, index, value) {\n if (array.length <= index) {\n array[index] = value;\n }\n else {\n array.splice(index, 0, value);\n }\n}\nfunction select(workingSet, query) {\n const nextSet = [];\n workingSet.forEach((d) => nextSet.push(...get(d[0], query, ReturnType.ALL)));\n return nextSet;\n}\nfunction addToArray(result, index, value, force) {\n const target = result[0];\n // append?\n if (/^\\[\\]$/.test(index)) {\n target.push(value);\n const i = target.length - 1;\n return [target[i], i, target, `${result[3]}/${i}}`];\n }\n // MERGE_ITEMS?\n if (force == null &&\n getType(target[index]) === \"object\" &&\n getType(value) === \"object\") {\n return [target[index], index, target, `${result[3]}/${index}}`];\n }\n if (force === set.INSERT_ITEMS ||\n (force == null && arrayHasIndex.test(index))) {\n const arrayIndex = convertToIndex(index);\n insert(target, arrayIndex, value);\n return [\n target[arrayIndex],\n arrayIndex,\n target,\n `${result[3]}/${arrayIndex}}`,\n ];\n }\n if (force === set.REPLACE_ITEMS || force == null) {\n const arrayIndex = convertToIndex(index);\n target[arrayIndex] = value;\n return [\n target[arrayIndex],\n arrayIndex,\n target,\n `${result[3]}/${arrayIndex}}`,\n ];\n }\n throw new Error(`Unknown array index '${index}' with force-option '${force}'`);\n}\nfunction create(workingSet, query, keyIsArray, force) {\n query = removeEscape(query);\n return workingSet\n .filter((o) => {\n // replacing or inserting array\n if (Array.isArray(o[0]) && isArrayProp.test(query)) {\n return true;\n }\n return ignoreTypes.includes(getType(o[0][query])) === false;\n })\n .map((r) => {\n const container = keyIsArray ? [] : {};\n const o = r[0];\n if (Array.isArray(o)) {\n return addToArray(r, query, container, force);\n }\n o[query] = o[query] || container;\n return [o[query], query, o, `${r[3]}/${query}`];\n });\n}\nexport var InsertMode;\n(function (InsertMode) {\n InsertMode[\"REPLACE_ITEMS\"] = \"replace\";\n InsertMode[\"INSERT_ITEMS\"] = \"insert\";\n})(InsertMode || (InsertMode = {}));\n// for all array-indices within path, replace the values, ignoring insertion syntax /[1]/\nset.REPLACE_ITEMS = InsertMode.REPLACE_ITEMS;\n// for all array-indices within path, insert the values, ignoring replace syntax /1/\nset.INSERT_ITEMS = InsertMode.INSERT_ITEMS;\n// set.MERGE_ITEMS = \"merge\";\n/**\n * Runs query on input data and assigns a value to query-results.\n * @param data - input data\n * @param queryString - json-query string\n * @param value - value to assign\n * @param [force] - whether to replace or insert into arrays\n */\nexport function set(data, queryString, value, force) {\n if (queryString == null) {\n return cp(data);\n }\n queryString = queryString.replace(/(\\/$)/g, \"\");\n if (queryString === \"\") {\n return cp(value);\n }\n const result = cp(data);\n let workingSet = [[result, null, null, \"#\"]];\n const path = split(queryString);\n const property = path.pop();\n const arrayWithoutIndex = isArray.test(property) && arrayHasIndex.test(property) === false;\n if (isProperty.test(property) === false || arrayWithoutIndex) {\n throw new Error(`Unsupported query '${queryString}' ending with non-property`);\n }\n path.forEach((query, index) => {\n if (\"__proto__\" === query ||\n \"prototyped\" === query ||\n \"constructor\" === query) {\n return;\n }\n if (isProperty.test(query) === false) {\n workingSet = select(workingSet, query);\n return;\n }\n // process property & missing data-structure\n const nextKey = index >= path.length - 1 ? property : path[index + 1];\n const insertArray = isArrayProp.test(nextKey);\n workingSet = create(workingSet, query, insertArray, force);\n });\n workingSet.forEach((r) => {\n let targetValue = value;\n if (getType(value) === \"function\") {\n targetValue = value(r[3], property, r[0], `${r[3]}/${property}`);\n }\n const d = r[0];\n if (Array.isArray(d)) {\n addToArray(r, property, targetValue, force);\n }\n else {\n const unescapedProp = removeEscape(property);\n if (\"__proto__\" === unescapedProp ||\n \"prototyped\" === unescapedProp ||\n \"constructor\" === unescapedProp) {\n return;\n }\n d[unescapedProp] = targetValue;\n }\n });\n return result;\n}\n","import { get, ReturnType } from \"./lib/get\";\nimport { set } from \"./lib/set\";\nimport { split } from \"./lib/split\";\nimport { remove } from \"./lib/remove\";\nexport { get, set, split, remove, ReturnType };\nexport default { get, set, split, remove, ReturnType };\n","const Types = {\n $ref: {\n type: false\n },\n allOf: {\n type: false,\n definitions: [\"allOf/*\"]\n },\n anyOf: {\n type: false,\n definitions: [\"anyOf/*\"]\n },\n array: {\n type: true,\n // ignore additionalItems:TypeDef, when items:TypeDef\n definitions: [\n \"allOf/*\",\n \"anyOf/*\",\n \"oneOf/*\",\n \"not\",\n \"items\",\n \"items/*\",\n \"additionalItems\"\n ],\n validationKeywords: [\"minItems\", \"maxItems\", \"uniqueItems\"],\n keywords: [\"items\", \"additionalItems\", \"minItems\", \"maxItems\", \"uniqueItems\"]\n },\n boolean: {\n type: true\n },\n enum: {\n type: false\n },\n integer: {\n type: true,\n definitions: [\"allOf/*\", \"anyOf/*\", \"oneOf/*\", \"not\"],\n validationKeywords: [\"minimum\", \"maximum\", \"multipleOf\"]\n },\n not: {\n type: false,\n definitions: [\"not\"]\n },\n number: {\n type: true,\n definitions: [\"allOf/*\", \"anyOf/*\", \"oneOf/*\", \"not\"],\n validationKeywords: [\"minimum\", \"maximum\", \"multipleOf\"]\n },\n null: {\n type: true\n },\n object: {\n type: true,\n // patternProperties also validate properties\n // dependencies:(string, TypeDef) extend current TypeDef\n // additional Properties validate only remaining properties (after properties & pattern)\n definitions: [\n \"allOf/*\",\n \"anyOf/*\",\n \"oneOf/*\",\n \"not\",\n \"properties/*\",\n \"additionalProperties\",\n \"patternProperties/*\",\n \"dependencies/*\"\n ],\n validationKeywords: [\"minProperties\", \"maxProperties\", \"required\"],\n keywords: [\n \"properties\",\n \"additionalProperties\",\n \"patternProperties\",\n \"dependencies\",\n \"minProperties\",\n \"maxProperties\",\n \"required\"\n ]\n },\n oneOf: {\n type: false,\n definitions: [\"oneOf/*\"]\n },\n string: {\n type: true,\n definitions: [\"allOf/*\", \"anyOf/*\", \"oneOf/*\", \"not\"],\n validationKeywords: [\"minLength\", \"maxLength\", \"pattern\"]\n }\n};\nexport default Types;\n","import types from \"./types\";\nconst isObject = (value) => Object.prototype.toString.call(value) === \"[object Object]\";\nconst typeKeywords = Object.keys(types).filter((id) => types[id].type === false);\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * @throws Error on multiple matches (invalid schema)\n *\n * Returns the type id of a schema object\n * @param schema\n * @return type id, if found\n */\nexport default function getTypeId(schema) {\n if (isObject(schema) === false) {\n return undefined;\n }\n if (schema.enum) {\n return \"enum\";\n }\n // @ts-ignore\n if (types[schema.type] || Array.isArray(schema.type)) {\n return schema.type;\n }\n const ids = typeKeywords.filter((type) => schema[type]);\n if (ids.length === 1) {\n return ids[0];\n }\n if (ids.length === 0) {\n // @expensive, guess type object\n for (let i = 0, l = types.object.keywords.length; i < l; i += 1) {\n const keyword = types.object.keywords[i];\n if (hasOwnProperty.call(schema, keyword)) {\n // eslint-disable-line\n return \"object\";\n }\n }\n // @expensive, guess type array\n for (let i = 0, l = types.array.keywords.length; i < l; i += 1) {\n const keyword = types.array.keywords[i];\n if (hasOwnProperty.call(schema, keyword)) {\n // eslint-disable-line\n return \"array\";\n }\n }\n return undefined;\n }\n throw new Error(`Mutiple typeIds [${ids.join(\", \")}] matched in ${JSON.stringify(schema)}`);\n}\n","import gp from \"@sagold/json-pointer\";\nimport getTypeDefs from \"./schema/getTypeDefs\";\nconst isObject = (value) => Object.prototype.toString.call(value) === \"[object Object]\";\nfunction nextTypeDefs(schema, pointer) {\n if (this.callback(schema, pointer) === true) {\n // eslint-disable-line no-invalid-this\n return; // stop iteration\n }\n const defs = getTypeDefs(schema);\n // eslint-disable-next-line no-invalid-this\n defs.forEach((next) => this.nextTypeDefs(next.def, gp.join(pointer, next.pointer, false)));\n}\nfunction eachDefinition(walk, schema, pointer, key = \"definitions\") {\n const defs = schema[key];\n Object.keys(defs).forEach((defId) => {\n if (defs[defId] === false || isObject(defs[defId])) {\n walk.nextTypeDefs(defs[defId], gp.join(pointer, key, defId, false));\n return;\n }\n // console.log(`Invalid schema in ${pointer}/${key}/${defId}`);\n });\n}\nexport function eachSchema(schema, callback, pointer = \"#\") {\n const walk = { callback, nextTypeDefs };\n walk.nextTypeDefs(schema, pointer);\n if (schema.definitions != null) {\n walk.callback = (defschema, schemaPointer) => {\n callback(defschema, schemaPointer);\n if (defschema.definitions != null) {\n eachDefinition(walk, defschema, schemaPointer);\n }\n };\n eachDefinition(walk, schema, pointer);\n }\n if (schema.$defs != null) {\n walk.callback = (defschema, schemaPointer) => {\n callback(defschema, schemaPointer);\n if (defschema.definitions != null) {\n eachDefinition(walk, defschema, schemaPointer);\n }\n };\n eachDefinition(walk, schema, pointer, \"$defs\");\n }\n}\n","import gp from \"@sagold/json-pointer\";\nimport { get } from \"@sagold/json-query\";\nimport getTypeId from \"./getTypeId\";\nimport types from \"./types\";\nconst isObject = (value) => Object.prototype.toString.call(value) === \"[object Object]\";\n/**\n * Returns a list of all (direct) type definitions from the given schema\n * @param schema\n * @return list of type definition, given as { pointer, def }\n */\nexport default function getTypeDefs(schema) {\n const defs = [];\n const id = getTypeId(schema);\n if (id == null) {\n return defs;\n }\n let type;\n if (Array.isArray(id)) {\n // since types can also be declared as a set of types, merge the definitions\n // maybe this will require a more sophisticated approach\n type = {};\n for (let i = 0, l = id.length; i < l; i += 1) {\n Object.assign(type, types[id[i]]);\n }\n }\n else {\n type = types[id];\n }\n if (type.definitions == null) {\n return defs;\n }\n type.definitions.forEach((query) => {\n get(schema, query, (value, key, parent, pointer) => {\n if (isObject(value) && getTypeId(value)) {\n defs.push({ pointer: gp.join(gp.split(pointer), false), def: value });\n }\n });\n });\n return defs;\n}\n","/* eslint max-statements-per-line: [\"error\", { \"max\": 2 }] */\nconst suffixes = /(#|\\/)+$/;\nconst trailingHash = /#$/;\nconst isDomain = /^[^:]+:\\/\\/[^/]+\\//;\nconst trailingFragments = /\\/[^/]*$/;\nconst idAndPointer = /#.*$/;\nexport default function joinScope(previous, id) {\n if (previous == null && id == null) {\n return \"#\";\n }\n if (id == null) {\n return previous.replace(trailingHash, \"\");\n }\n if (previous == null) {\n return id.replace(trailingHash, \"\");\n }\n if (id[0] === \"#\") {\n return `${previous.replace(idAndPointer, \"\")}${id.replace(suffixes, \"\")}`;\n }\n if (isDomain.test(id)) {\n return id.replace(trailingHash, \"\");\n }\n return `${previous.replace(trailingFragments, \"\")}/${id.replace(trailingHash, \"\")}`;\n}\n","const suffixes = /(#|\\/)+$/g;\nconst emptyValues = [\"\", null, \"#\"];\nexport default function splitRef($ref) {\n if (emptyValues.includes($ref)) {\n return [];\n }\n $ref = $ref.replace(suffixes, \"\");\n if ($ref.indexOf(\"#\") === -1) {\n return [$ref.replace(suffixes, \"\")];\n }\n if ($ref.indexOf(\"#\") === 0) {\n return [$ref.replace(suffixes, \"\")];\n }\n const result = $ref.split(\"#\");\n result[0] = result[0].replace(suffixes, \"\");\n result[1] = `#${result[1].replace(suffixes, \"\")}`;\n return result;\n}\n","import { get } from \"@sagold/json-pointer\";\nimport splitRef from \"./splitRef\";\nimport getTypeOf from \"../getTypeOf\";\nconst suffixes = /(#|\\/)+$/g;\nconst isObject = (val) => getTypeOf(val) === \"object\";\n// 1. combined is known\n// 2. base or pointer is known\n// 3. base + pointer is known\nexport default function getRef(context, rootSchema, $ref) {\n if (isObject($ref)) {\n $ref = $ref.__ref || $ref.$ref;\n }\n if ($ref == null) {\n return rootSchema;\n }\n let schema;\n // is it a known $ref?\n const $remote = $ref.replace(suffixes, \"\");\n if (context.remotes[$remote]) {\n schema = context.remotes[$remote];\n if (schema && schema.$ref) {\n return getRef(context, rootSchema, schema.$ref);\n }\n return schema;\n }\n if (context.ids[$ref]) {\n schema = get(rootSchema, context.ids[$ref]);\n if (schema && schema.$ref) {\n return getRef(context, rootSchema, schema.$ref);\n }\n return schema;\n }\n // is it a ref with host/pointer?\n const fragments = splitRef($ref);\n if (fragments.length === 0) {\n return rootSchema;\n }\n if (fragments.length === 1) {\n $ref = fragments[0];\n if (context.remotes[$ref]) {\n schema = context.remotes[$ref];\n return getRef(context, rootSchema, schema.$ref);\n }\n if (context.ids[$ref]) {\n schema = get(rootSchema, context.ids[$ref]);\n if (schema && schema.$ref) {\n return getRef(context, rootSchema, schema.$ref);\n }\n return schema;\n }\n }\n if (fragments.length === 2) {\n const base = fragments[0];\n $ref = fragments[1];\n if (context.remotes[base]) {\n if (context.remotes[base].getRef) {\n return context.remotes[base].getRef($ref);\n }\n // console.log(\"warning: uncompiled remote - context may be wrong\", base);\n return getRef(context, context.remotes[base], $ref);\n }\n if (context.ids[base]) {\n return getRef(context, get(rootSchema, context.ids[base]), $ref);\n }\n }\n schema = get(rootSchema, context.ids[$ref] || $ref);\n if (schema && schema.$ref) {\n return getRef(context, rootSchema, schema.$ref);\n }\n return schema;\n}\n","import { eachSchema } from \"../../eachSchema\";\n// import remotes from \"../../../remotes\";\nimport joinScope from \"../../compile/joinScope\";\nimport getRef from \"../../compile/getRef\";\nimport { get } from \"@sagold/json-pointer\";\nconst COMPILED = \"__compiled\";\nconst COMPILED_REF = \"__ref\";\nconst GET_REF = \"getRef\";\nconst GET_ROOT = \"getRoot\";\nconst suffixes = /(#|\\/)+$/g;\n/**\n * @draft starting with _draft 06_ keyword `id` has been renamed to `$id`\n *\n * compiles the input root schema for $ref resolution and returns it again\n * @attention this modifies input schema but maintains object-structure\n *\n * for a compiled json-schema you can call getRef on any contained schema (location of type).\n * this resolves a $ref target to a valid schema (for a valid $ref)\n *\n * @param rootSchema root json-schema ($id, defs, ... ) to compile\n * @param [force] = false force compile json-schema\n * @return compiled json-schema\n */\nexport default function compileSchema(draft, schemaToCompile, rootSchema = schemaToCompile, force = false) {\n // @ts-ignore\n if (schemaToCompile === true || schemaToCompile === false || schemaToCompile === undefined) {\n return schemaToCompile;\n }\n if (schemaToCompile[COMPILED] !== undefined) {\n return schemaToCompile;\n } // eslint-disable-line\n const context = { ids: {}, remotes: draft.remotes };\n const rootSchemaAsString = JSON.stringify(schemaToCompile);\n const compiledSchema = JSON.parse(rootSchemaAsString);\n Object.defineProperty(compiledSchema, COMPILED, { enumerable: false, value: true });\n Object.defineProperty(compiledSchema, GET_REF, {\n enumerable: false,\n value: getRef.bind(null, context, compiledSchema)\n });\n // bail early, when no $refs are defined\n if (force === false && rootSchemaAsString.includes(\"$ref\") === false) {\n return compiledSchema;\n }\n // compile this schema under rootSchema, making definitions available to $ref-resolution\n if (compiledSchema !== rootSchema) {\n Object.defineProperty(compiledSchema, \"$defs\", {\n enumerable: true,\n value: Object.assign({}, rootSchema.definitions, rootSchema.$defs, compiledSchema.definitions, compiledSchema.$defs)\n });\n }\n const scopes = {};\n const getRoot = () => compiledSchema;\n eachSchema(compiledSchema, (schema, pointer) => {\n var _a;\n if (schema.$id) {\n // if this is a schema being merged on root object, we cannot override\n // parents locations, but must reuse it\n if (schema.$id.startsWith(\"http\") && /(allOf|anyOf|oneOf)\\/\\d+$/.test(pointer)) {\n const parentPointer = pointer.replace(/\\/(allOf|anyOf|oneOf)\\/\\d+$/, \"\");\n const parentSchema = get(compiledSchema, parentPointer);\n schema.$id = (_a = parentSchema.$id) !== null && _a !== void 0 ? _a : schema.$id;\n }\n context.ids[schema.$id.replace(suffixes, \"\")] = pointer;\n }\n // build up scopes and add them to $ref-resolution map\n pointer = `#${pointer}`.replace(/##+/, \"#\");\n const previousPointer = pointer.replace(/\\/[^/]+$/, \"\");\n const parentPointer = pointer.replace(/\\/[^/]+\\/[^/]+$/, \"\");\n const previousScope = scopes[previousPointer] || scopes[parentPointer];\n const scope = joinScope(previousScope, schema.$id);\n scopes[pointer] = scope;\n if (context.ids[scope] == null) {\n context.ids[scope] = pointer;\n }\n if (schema.$ref && !schema[COMPILED_REF]) {\n Object.defineProperty(schema, COMPILED_REF, {\n enumerable: false,\n value: joinScope(scope, schema.$ref)\n });\n // @todo currently not used:\n Object.defineProperty(schema, GET_ROOT, { enumerable: false, value: getRoot });\n // console.log(\"compiled ref\", scope, schema.$ref, \"=>\", joinScope(scope, schema.$ref));\n }\n });\n return compiledSchema;\n}\n","/* eslint no-invalid-this: 0 */\nimport { createCustomError } from \"../utils/createCustomError\";\nconst errors = {\n additionalItemsError: createCustomError(\"AdditionalItemsError\"),\n additionalPropertiesError: createCustomError(\"AdditionalPropertiesError\"),\n anyOfError: createCustomError(\"AnyOfError\"),\n allOfError: createCustomError(\"AllOfError\"),\n constError: createCustomError(\"ConstError\"),\n containsError: createCustomError(\"ContainsError\"),\n containsArrayError: createCustomError(\"ContainsArrayError\"),\n containsAnyError: createCustomError(\"ContainsAnyError\"),\n enumError: createCustomError(\"EnumError\"),\n formatURLError: createCustomError(\"FormatURLError\"),\n formatURIError: createCustomError(\"FormatURIError\"),\n formatURIReferenceError: createCustomError(\"FormatURIReferenceError\"),\n formatURITemplateError: createCustomError(\"FormatURITemplateError\"),\n formatDateError: createCustomError(\"FormatDateaError\"),\n formatDateTimeError: createCustomError(\"FormatDateTimeError\"),\n formatEmailError: createCustomError(\"FormatEmailError\"),\n formatHostnameError: createCustomError(\"FormatHostnameError\"),\n formatIPV4Error: createCustomError(\"FormatIPV4Error\"),\n formatIPV4LeadingZeroError: createCustomError(\"FormatIPV4LeadingZeroError\"),\n formatIPV6Error: createCustomError(\"FormatIPV6Error\"),\n formatIPV6LeadingZeroError: createCustomError(\"FormatIPV6LeadingZeroError\"),\n formatJSONPointerError: createCustomError(\"FormatJSONPointerError\"),\n formatRegExError: createCustomError(\"FormatRegExError\"),\n formatTimeError: createCustomError(\"FormatTimeError\"),\n invalidSchemaError: createCustomError(\"InvalidSchemaError\"),\n invalidDataError: createCustomError(\"InvalidDataError\"),\n invalidTypeError: createCustomError(\"InvalidTypeError\"),\n invalidPropertyNameError: createCustomError(\"InvalidPropertyNameError\"),\n maximumError: createCustomError(\"MaximumError\"),\n maxItemsError: createCustomError(\"MaxItemsError\"),\n maxLengthError: createCustomError(\"MaxLengthError\"),\n maxPropertiesError: createCustomError(\"MaxPropertiesError\"),\n minimumError: createCustomError(\"MinimumError\"),\n minItemsError: createCustomError(\"MinItemsError\"),\n minItemsOneError: createCustomError(\"MinItemsOneError\"),\n minLengthError: createCustomError(\"MinLengthError\"),\n minLengthOneError: createCustomError(\"MinLengthOneError\"),\n minPropertiesError: createCustomError(\"MinPropertiesError\"),\n missingDependencyError: createCustomError(\"MissingDependencyError\"),\n missingOneOfPropertyError: createCustomError(\"MissingOneOfPropertyError\"),\n multipleOfError: createCustomError(\"MultipleOfError\"),\n multipleOneOfError: createCustomError(\"MultipleOneOfError\"),\n noAdditionalPropertiesError: createCustomError(\"NoAdditionalPropertiesError\"),\n notError: createCustomError(\"NotError\"),\n oneOfError: createCustomError(\"OneOfError\"),\n oneOfPropertyError: createCustomError(\"OneOfPropertyError\"),\n patternError: createCustomError(\"PatternError\"),\n patternPropertiesError: createCustomError(\"PatternPropertiesError\"),\n requiredPropertyError: createCustomError(\"RequiredPropertyError\"),\n typeError: createCustomError(\"TypeError\"),\n undefinedValueError: createCustomError(\"UndefinedValueError\"),\n uniqueItemsError: createCustomError(\"UniqueItemsError\"),\n unknownPropertyError: createCustomError(\"UnknownPropertyError\"),\n valueNotEmptyError: createCustomError(\"ValueNotEmptyError\")\n};\nexport default errors;\n","/* eslint-disable max-len, no-control-regex */\nimport errors from \"./errors\";\nimport validUrl from \"valid-url\";\n// referenced\n// https://github.com/cfworker/cfworker/blob/main/packages/json-schema/src/format.ts\n// https://gist.github.com/marcelotmelo/b67f58a08bee6c2468f8\nconst isValidDateTime = new RegExp(\"^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\\\.[0-9]+)?(([Zz])|([\\\\+|\\\\-]([01][0-9]|2[0-3]):[0-5][0-9]))$\");\nconst isValidIPV4 = /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/;\nconst isValidIPV6 = /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i;\nconst isValidHostname = /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/;\nconst matchDate = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nconst matchTime = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst isValidJSONPointer = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nconst isValidRelativeJSONPointer = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\nconst isValidURIRef = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nconst isValidURITemplate = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// Default JSON-Schema formats: date-time, email, hostname, ipv4, ipv6, uri, uriref\nconst formatValidators = {\n date: (core, schema, value, pointer) => {\n if (typeof value !== \"string\") {\n return undefined;\n }\n // https://github.com/cfworker/cfworker/blob/main/packages/json-schema/src/format.ts\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches = value.match(matchDate);\n if (!matches) {\n return errors.formatDateTimeError({ value, pointer });\n }\n const year = +matches[1];\n const month = +matches[2];\n const day = +matches[3];\n // https://tools.ietf.org/html/rfc3339#appendix-C\n const isLeapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n if (month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month == 2 && isLeapYear ? 29 : DAYS[month])) {\n return undefined;\n }\n return errors.formatDateError({ value, pointer });\n },\n \"date-time\": (core, schema, value, pointer) => {\n if (typeof value !== \"string\") {\n return undefined;\n }\n if (value === \"\" || isValidDateTime.test(value)) {\n if (new Date(value).toString() === \"Invalid Date\") {\n return errors.formatDateTimeError({ value, pointer });\n }\n return undefined;\n }\n return errors.formatDateTimeError({ value, pointer });\n },\n email: (core, schema, value, pointer) => {\n // taken from https://github.com/ExodusMovement/schemasafe/blob/master/src/formats.js\n if (typeof value !== \"string\") {\n return undefined;\n }\n if (value[0] === '\"') {\n return errors.formatEmailError({ value, pointer });\n }\n const [name, host, ...rest] = value.split(\"@\");\n if (!name || !host || rest.length !== 0 || name.length > 64 || host.length > 253) {\n return errors.formatEmailError({ value, pointer });\n }\n if (name[0] === \".\" || name.endsWith(\".\") || name.includes(\"..\")) {\n return errors.formatEmailError({ value, pointer });\n }\n if (!/^[a-z0-9.-]+$/i.test(host) || !/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(name)) {\n return errors.formatEmailError({ value, pointer });\n }\n if (!host.split(\".\").every((part) => /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(part))) {\n return errors.formatEmailError({ value, pointer });\n }\n return undefined;\n },\n hostname: (core, schema, value, pointer) => {\n if (typeof value !== \"string\") {\n return undefined;\n }\n if (value === \"\" || isValidHostname.test(value)) {\n return undefined;\n }\n return errors.formatHostnameError({ value, pointer });\n },\n ipv4: (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (value && value[0] === \"0\") {\n // leading zeroes should be rejected, as they are treated as octals\n return errors.formatIPV4LeadingZeroError({ value, pointer });\n }\n if (value.length <= 15 && isValidIPV4.test(value)) {\n return undefined;\n }\n return errors.formatIPV4Error({ value, pointer });\n },\n ipv6: (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (value && value[0] === \"0\") {\n // leading zeroes should be rejected, as they are treated as octals\n return errors.formatIPV6LeadingZeroError({ value, pointer });\n }\n if (value.length <= 45 && isValidIPV6.test(value)) {\n return undefined;\n }\n return errors.formatIPV6Error({ value, pointer });\n },\n \"json-pointer\": (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (isValidJSONPointer.test(value)) {\n return undefined;\n }\n return errors.formatJSONPointerError({ value, pointer });\n },\n \"relative-json-pointer\": (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (isValidRelativeJSONPointer.test(value)) {\n return undefined;\n }\n return errors.formatJSONPointerError({ value, pointer });\n },\n regex: (core, schema, value, pointer) => {\n if (typeof value === \"string\" && /\\\\Z$/.test(value) === false) {\n try {\n new RegExp(value);\n return undefined;\n }\n catch (e) { } // eslint-disable-line no-empty\n return errors.formatRegExError({ value, pointer });\n }\n // v7 tests, ignore non-regex values\n if (typeof value === \"object\" || typeof value === \"number\" || Array.isArray(value)) {\n return undefined;\n }\n return errors.formatRegExError({ value, pointer });\n },\n time: (core, schema, value, pointer) => {\n if (typeof value !== \"string\") {\n return undefined;\n }\n // https://github.com/cfworker/cfworker/blob/main/packages/json-schema/src/format.ts\n const matches = value.match(matchTime);\n if (!matches) {\n return errors.formatDateTimeError({ value, pointer });\n }\n const hour = +matches[1];\n const minute = +matches[2];\n const second = +matches[3];\n const timeZone = !!matches[5];\n if (((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n timeZone) {\n return undefined;\n }\n return errors.formatTimeError({ value, pointer });\n },\n uri: (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (validUrl.isUri(value)) {\n return undefined;\n }\n return errors.formatURIError({ value, pointer });\n },\n \"uri-reference\": (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (isValidURIRef.test(value)) {\n return undefined;\n }\n return errors.formatURIReferenceError({ value, pointer });\n },\n \"uri-template\": (core, schema, value, pointer) => {\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n if (isValidURITemplate.test(value)) {\n return undefined;\n }\n return errors.formatURITemplateError({ value, pointer });\n },\n url: (core, schema, value, pointer) => {\n if (value === \"\" || validUrl.isWebUri(value)) {\n return undefined;\n }\n return errors.formatUrlError({ value, pointer });\n }\n};\nexport default formatValidators;\n","/* eslint quote-props: 0, max-statements-per-line: [\"error\", { \"max\": 2 }] */\nimport resolveOneOfFuzzy from \"./resolveOneOf.fuzzy\";\nimport getTypeOf from \"./getTypeOf\";\nimport merge from \"./utils/merge\";\nimport copy from \"./utils/copy\";\nimport settings from \"./config/settings\";\nimport { isJSONError } from \"./types\";\nimport { isEmpty } from \"./utils/isEmpty\";\nconst defaultOptions = {\n addOptionalProps: true,\n removeInvalidData: false\n};\nlet cache;\nfunction shouldResolveRef(schema, pointer) {\n const { $ref } = schema;\n if ($ref == null) {\n return true;\n }\n const value = cache[pointer] == null || cache[pointer][$ref] == null ? 0 : cache[pointer][$ref];\n return value < settings.GET_TEMPLATE_RECURSION_LIMIT;\n}\nfunction resolveRef(core, schema, pointer) {\n // ensure we refactored consistently\n if (pointer == null) {\n throw new Error(`missing pointer ${pointer}`);\n }\n const { $ref } = schema;\n if ($ref == null) {\n return schema;\n }\n // @todo pointer + ref is redundant?\n cache[pointer] = cache[pointer] || {};\n cache[pointer][$ref] = cache[pointer][$ref] || 0;\n cache[pointer][$ref] += 1;\n return core.resolveRef(schema);\n}\nfunction convertValue(type, value) {\n if (type === \"string\") {\n return JSON.stringify(value);\n }\n else if (typeof value !== \"string\") {\n return null;\n }\n try {\n value = JSON.parse(value);\n if (typeof value === type) {\n return value;\n }\n }\n catch (e) { } // eslint-disable-line no-empty\n return null;\n}\n/**\n * Resolves $ref, allOf and anyOf schema-options, returning a combined json-schema.\n * Also returns a pointer-property on schema, that must be used as current pointer.\n * @param core\n * @param schema\n * @param data\n * @param pointer\n * @return resolved json-schema or input-schema\n */\nfunction createTemplateSchema(core, schema, data, pointer) {\n // invalid schema\n if (getTypeOf(schema) !== \"object\") {\n return Object.assign({ pointer }, schema);\n }\n // return if reached recursion limit\n if (shouldResolveRef(schema, pointer) === false && data == null) {\n return false;\n }\n // resolve $ref and copy schema\n let templateSchema = copy(resolveRef(core, schema, pointer));\n if (Array.isArray(schema.anyOf) && schema.anyOf.length > 0) {\n // test if we may resolve\n if (shouldResolveRef(schema.anyOf[0], `${pointer}/anyOf/0`)) {\n const resolvedAnyOf = resolveRef(core, schema.anyOf[0], `${pointer}/anyOf/0`);\n templateSchema = merge(templateSchema, resolvedAnyOf);\n // add pointer return-value, if any\n templateSchema.pointer = schema.anyOf[0].$ref || templateSchema.pointer;\n }\n delete templateSchema.anyOf;\n }\n // resolve allOf\n if (Array.isArray(schema.allOf)) {\n for (let i = 0, l = schema.allOf.length; i < l; i += 1) {\n // test if we may resolve\n if (shouldResolveRef(schema.allOf[i], `${pointer}/allOf/${i}`)) {\n templateSchema = merge(templateSchema, resolveRef(core, schema.allOf[i], `${pointer}/allOf/${i}`));\n // add pointer return-value, if any\n templateSchema.pointer = schema.allOf[i].$ref || templateSchema.pointer;\n }\n }\n delete templateSchema.allOf;\n }\n templateSchema.pointer = templateSchema.pointer || schema.$ref || pointer;\n return templateSchema;\n}\nconst isJSONSchema = (template) => template && typeof template === \"object\";\n/**\n * Create data object matching the given schema\n *\n * @param core - json schema core\n * @param [data] - optional template data\n * @param [schema] - json schema, defaults to rootSchema\n * @return created template data\n */\nfunction getTemplate(core, data, _schema, pointer, opts) {\n if (_schema == null) {\n throw new Error(`getTemplate: missing schema for data: ${JSON.stringify(data)}`);\n }\n if (pointer == null) {\n throw new Error(\"Missing pointer\");\n }\n // resolve $ref references, allOf and first anyOf definitions\n let schema = createTemplateSchema(core, _schema, data, pointer);\n if (!isJSONSchema(schema)) {\n return undefined;\n }\n pointer = schema.pointer;\n if (schema === null || schema === void 0 ? void 0 : schema.const) {\n return schema.const;\n }\n if (Array.isArray(schema.oneOf)) {\n if (isEmpty(data)) {\n const type = schema.oneOf[0].type ||\n schema.type ||\n (schema.const && typeof schema.const) ||\n getTypeOf(data);\n schema = { ...schema.oneOf[0], type };\n }\n else {\n // find correct schema for data\n const resolvedSchema = resolveOneOfFuzzy(core, data, schema);\n if (isJSONError(resolvedSchema)) {\n if (data != null && opts.removeInvalidData !== true) {\n return data;\n }\n // override\n schema = schema.oneOf[0];\n data = undefined;\n }\n else {\n schema = resolvedSchema;\n }\n }\n }\n // @todo Array.isArray(schema.type)\n // -> hasDefault? return\n // if not -> pick first types\n if (!isJSONSchema(schema) || schema.type == null) {\n return undefined;\n }\n const type = Array.isArray(schema.type)\n ? selectType(schema.type, data, schema.default)\n : schema.type;\n // reset invalid type\n if (data != null && getTypeOf(data) !== type) {\n data = convertValue(type, data);\n }\n if (TYPE[type] == null) {\n // in case we could not resolve the type\n // (schema-type could not be resolved and returned an error)\n if (opts.removeInvalidData) {\n return undefined;\n }\n return data;\n }\n const templateData = TYPE[type](core, schema, data, pointer, opts);\n return templateData;\n}\nfunction selectType(types, data, defaultValue) {\n if (data == undefined) {\n if (defaultValue != null) {\n const defaultType = getTypeOf(defaultValue);\n if (types.includes(defaultType)) {\n return defaultType;\n }\n }\n return types[0];\n }\n const dataType = getTypeOf(data);\n if (types.includes(dataType)) {\n return dataType;\n }\n return types[0];\n}\nconst TYPE = {\n null: (core, schema, data) => getDefault(schema, data, null),\n string: (core, schema, data) => getDefault(schema, data, \"\"),\n number: (core, schema, data) => getDefault(schema, data, 0),\n integer: (core, schema, data) => getDefault(schema, data, 0),\n boolean: (core, schema, data) => getDefault(schema, data, false),\n object: (core, schema, data, pointer, opts) => {\n var _a;\n const template = schema.default === undefined ? {} : schema.default;\n const d = {}; // do not assign data here, to keep ordering from json-schema\n const required = (_a = schema.required) !== null && _a !== void 0 ? _a : [];\n if (schema.properties) {\n Object.keys(schema.properties).forEach((key) => {\n const value = data == null || data[key] == null ? template[key] : data[key];\n const isRequired = required.includes(key);\n // Omit adding a property if it is not required or optional props should be added\n if (value != null || isRequired || opts.addOptionalProps) {\n d[key] = getTemplate(core, value, schema.properties[key], `${pointer}/properties/${key}`, opts);\n }\n });\n }\n if (schema.dependencies) {\n Object.keys(schema.dependencies).forEach((key) => {\n if (d[key] === undefined) {\n return;\n }\n const dependency = schema.dependencies[key];\n // dependencyRequired: { key: ['prop1', 'prop2'] }\n if (Array.isArray(dependency)) {\n dependency.forEach((prop) => {\n d[prop] = getTemplate(core, d[prop], schema.properties[prop], `${pointer}/properties/${prop}`, opts);\n });\n return;\n }\n if (getTypeOf(dependency) !== \"object\") {\n return;\n }\n const result = getTemplate(core, data, {\n ...dependency,\n // required: Object.keys(dependency.properties || {}).concat(\n // dependency.required ?? []\n // ),\n type: \"object\"\n }, `${pointer}/dependencies/${key}`, opts);\n if (result && !isJSONError(result)) {\n Object.assign(d, result);\n }\n });\n }\n if (data) {\n // merge any missing data (additionals) to resulting object\n Object.keys(data).forEach((key) => d[key] == null && (d[key] = data[key]));\n }\n if (schema.if && (schema.then || schema.else)) {\n const isValid = core.isValid(d, schema.if);\n if (isValid && schema.then) {\n const additionalData = core.getTemplate(d, { type: \"object\", ...schema.then }, opts);\n Object.assign(d, additionalData);\n }\n else if (!isValid && schema.else) {\n const additionalData = core.getTemplate(d, { type: \"object\", ...schema.else }, opts);\n Object.assign(d, additionalData);\n }\n }\n // returns object, which is ordered by json-schema\n return d;\n },\n // build array type of items, ignores additionalItems\n array: (core, schema, data, pointer, opts) => {\n var _a, _b, _c;\n const template = schema.default === undefined ? [] : schema.default;\n schema.minItems = schema.minItems || 0;\n const d = data || [];\n // items are undefined\n if (schema.items == null) {\n return d;\n }\n // build defined set of items\n if (Array.isArray(schema.items)) {\n for (let i = 0, l = Math.max((_a = schema.minItems) !== null && _a !== void 0 ? _a : 0, (_c = (_b = schema.items) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0); i < l; i += 1) {\n d[i] = getTemplate(core, d[i] == null ? template[i] : d[i], schema.items[i], `${pointer}/items/${i}`, opts);\n }\n return d;\n }\n // abort if the schema is invalid\n if (getTypeOf(schema.items) !== \"object\") {\n return d;\n }\n // resolve allOf and first anyOf definition\n const templateSchema = createTemplateSchema(core, schema.items, data, pointer);\n if (templateSchema === false) {\n return d;\n }\n pointer = templateSchema.pointer || pointer;\n // build oneOf\n if (templateSchema.oneOf && d.length === 0) {\n const oneOfSchema = templateSchema.oneOf[0];\n for (let i = 0; i < schema.minItems; i += 1) {\n d[i] = getTemplate(core, d[i] == null ? template[i] : d[i], oneOfSchema, `${pointer}/oneOf/0`, opts);\n }\n return d;\n }\n if (templateSchema.oneOf && d.length > 0) {\n const itemCount = Math.max(schema.minItems, d.length);\n for (let i = 0; i < itemCount; i += 1) {\n let value = d[i] == null ? template[i] : d[i];\n let one = resolveOneOfFuzzy(core, value, templateSchema);\n if (one == null || isJSONError(one)) {\n // schema could not be resolved or data is invalid\n if (value != null && opts.removeInvalidData !== true) {\n // keep invalid value\n d[i] = value;\n }\n else {\n // replace invalid value\n value = undefined;\n one = templateSchema.oneOf[0];\n d[i] = getTemplate(core, value, one, `${pointer}/oneOf/${i}`, opts);\n }\n }\n else {\n // schema is valid\n d[i] = getTemplate(core, value, one, `${pointer}/oneOf/${i}`, opts);\n }\n }\n return d;\n }\n // build items-definition\n if (templateSchema.type) {\n for (let i = 0, l = Math.max(schema.minItems, d.length); i < l; i += 1) {\n d[i] = getTemplate(core, d[i] == null ? template[i] : d[i], templateSchema, `${pointer}/items`, opts);\n }\n return d;\n }\n return d;\n }\n};\nfunction getDefault(schema, templateValue, initValue) {\n if (templateValue != null) {\n return templateValue;\n }\n else if (schema.const) {\n return schema.const;\n }\n else if (schema.default === undefined && Array.isArray(schema.enum)) {\n return schema.enum[0];\n }\n else if (schema.default === undefined) {\n return initValue;\n }\n return schema.default;\n}\nexport default (core, data, schema = core.rootSchema, opts = defaultOptions) => {\n cache = { mi: {} };\n return getTemplate(core, data, schema, \"#\", opts);\n};\n","import getTypeOf from \"../getTypeOf\";\nexport function isEmpty(v) {\n const type = getTypeOf(v);\n switch (type) {\n case \"string\":\n case \"array\":\n // @ts-ignore\n return v.length === 0;\n case \"null\":\n case \"undefined\":\n return true;\n case \"object\":\n return Object.keys(v).length === 0;\n default:\n return false;\n }\n}\n","/**\n * deep comparison of javascript types. Better handling than using\n * JSON.stringify, where property order is accounted for\n *\n * @returns true, if data types are deep equal\n */\nexport default function deepCompareStrict(a, b) {\n const typeofa = typeof a;\n if (typeofa !== typeof b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i++) {\n if (!deepCompareStrict(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (typeofa === \"object\") {\n if (!a || !b) {\n return a === b;\n }\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n const length = aKeys.length;\n if (length !== bKeys.length) {\n return false;\n }\n for (const k of aKeys) {\n if (!deepCompareStrict(a[k], b[k])) {\n return false;\n }\n }\n return true;\n }\n return a === b;\n}\n","/* eslint no-bitwise: 0 */\n/**\n * taken from punycode@2.1.0\n *\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param string The Unicode input string (UCS-2).\n * @returns The new array of code points.\n */\nexport default function ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xd800 && value <= 0xdbff && counter < length) {\n // It's a high surrogate, and there is a next character.\n const extra = string.charCodeAt(counter++);\n // eslint-disable-next-line eqeqeq\n if ((extra & 0xfc00) == 0xdc00) {\n // Low surrogate.\n output.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n }\n else {\n output.push(value);\n }\n }\n return output;\n}\n","import getTypeOf from \"../getTypeOf\";\nimport isSame from \"../utils/deepCompare\";\nimport settings from \"../config/settings\";\nimport ucs2decode from \"../utils/punycode.ucs2decode\";\nimport { isJSONError } from \"../types\";\nconst FPP = settings.floatingPointPrecision;\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasProperty = (value, property) => !(value[property] === undefined || !hasOwnProperty.call(value, property));\n// list of validation keywords: http://json-schema.org/latest/json-schema-validation.html#rfc.section.5\nconst KeywordValidation = {\n additionalProperties: (core, schema, value, pointer) => {\n if (schema.additionalProperties === true || schema.additionalProperties == null) {\n return undefined;\n }\n if (getTypeOf(schema.patternProperties) === \"object\" &&\n schema.additionalProperties === false) {\n // this is an arrangement with patternProperties. patternProperties validate before additionalProperties:\n // https://spacetelescope.github.io/understanding-json-schema/reference/object.html#index-5\n return undefined;\n }\n const errors = [];\n let receivedProperties = Object.keys(value).filter((prop) => settings.propertyBlacklist.includes(prop) === false);\n const expectedProperties = Object.keys(schema.properties || {});\n if (getTypeOf(schema.patternProperties) === \"object\") {\n // filter received properties by matching patternProperties\n const patterns = Object.keys(schema.patternProperties).map((pattern) => new RegExp(pattern));\n receivedProperties = receivedProperties.filter((prop) => {\n for (let i = 0; i < patterns.length; i += 1) {\n if (patterns[i].test(prop)) {\n return false; // remove\n }\n }\n return true;\n });\n }\n // adds an error for each an unexpected property\n for (let i = 0, l = receivedProperties.length; i < l; i += 1) {\n const property = receivedProperties[i];\n if (expectedProperties.indexOf(property) === -1) {\n const isObject = typeof schema.additionalProperties === \"object\";\n // additionalProperties { oneOf: [] }\n if (isObject && Array.isArray(schema.additionalProperties.oneOf)) {\n const result = core.resolveOneOf(value[property], schema.additionalProperties, `${pointer}/${property}`);\n if (isJSONError(result)) {\n errors.push(core.errors.additionalPropertiesError({\n schema: schema.additionalProperties,\n property: receivedProperties[i],\n properties: expectedProperties,\n pointer,\n // pass all validation errors\n errors: result.data.errors\n }));\n }\n else {\n errors.push(...core.validate(value[property], result, pointer));\n }\n // additionalProperties {}\n }\n else if (isObject) {\n errors.push(...core.validate(value[property], schema.additionalProperties, `${pointer}/${property}`));\n }\n else {\n errors.push(core.errors.noAdditionalPropertiesError({\n property: receivedProperties[i],\n properties: expectedProperties,\n pointer\n }));\n }\n }\n }\n return errors;\n },\n allOf: (core, schema, value, pointer) => {\n if (Array.isArray(schema.allOf) === false) {\n return undefined;\n }\n const errors = [];\n schema.allOf.forEach((subSchema) => {\n errors.push(...core.validate(value, subSchema, pointer));\n });\n return errors;\n },\n anyOf: (core, schema, value, pointer) => {\n if (Array.isArray(schema.anyOf) === false) {\n return undefined;\n }\n for (let i = 0; i < schema.anyOf.length; i += 1) {\n if (core.isValid(value, schema.anyOf[i])) {\n return undefined;\n }\n }\n return core.errors.anyOfError({ anyOf: schema.anyOf, value, pointer });\n },\n dependencies: (core, schema, value, pointer) => {\n if (getTypeOf(schema.dependencies) !== \"object\") {\n return undefined;\n }\n const errors = [];\n Object.keys(value).forEach((property) => {\n if (schema.dependencies[property] === undefined) {\n return;\n }\n // @draft >= 6 boolean schema\n if (schema.dependencies[property] === true) {\n return;\n }\n if (schema.dependencies[property] === false) {\n errors.push(core.errors.missingDependencyError({ pointer }));\n return;\n }\n let dependencyErrors;\n const type = getTypeOf(schema.dependencies[property]);\n if (type === \"array\") {\n dependencyErrors = schema.dependencies[property]\n .filter((dependency) => value[dependency] === undefined)\n .map((missingProperty) => core.errors.missingDependencyError({ missingProperty, pointer }));\n }\n else if (type === \"object\") {\n dependencyErrors = core.validate(value, schema.dependencies[property], pointer);\n }\n else {\n throw new Error(`Invalid dependency definition for ${pointer}/${property}. Must be list or schema`);\n }\n errors.push(...dependencyErrors);\n });\n return errors.length > 0 ? errors : undefined;\n },\n enum: (core, schema, value, pointer) => {\n const type = getTypeOf(value);\n if (type === \"object\" || type === \"array\") {\n const valueStr = JSON.stringify(value);\n for (let i = 0; i < schema.enum.length; i += 1) {\n if (JSON.stringify(schema.enum[i]) === valueStr) {\n return undefined;\n }\n }\n }\n else if (schema.enum.includes(value)) {\n return undefined;\n }\n return core.errors.enumError({ values: schema.enum, value, pointer });\n },\n format: (core, schema, value, pointer) => {\n if (core.validateFormat[schema.format]) {\n const errors = core.validateFormat[schema.format](core, schema, value, pointer);\n return errors;\n }\n // fail silently if given format is not defined\n return undefined;\n },\n items: (core, schema, value, pointer) => {\n // @draft >= 7 bool schema\n if (schema.items === false) {\n if (Array.isArray(value) && value.length === 0) {\n return undefined;\n }\n return core.errors.invalidDataError({ pointer, value });\n }\n const errors = [];\n for (let i = 0; i < value.length; i += 1) {\n const itemData = value[i];\n // @todo reevaluate: incomplete schema is created here\n const itemSchema = core.step(i, schema, value, pointer);\n if (isJSONError(itemSchema)) {\n return [itemSchema];\n }\n const itemErrors = core.validate(itemData, itemSchema, `${pointer}/${i}`);\n errors.push(...itemErrors);\n }\n return errors;\n },\n maximum: (core, schema, value, pointer) => {\n if (isNaN(schema.maximum)) {\n return undefined;\n }\n if (schema.maximum && schema.maximum < value) {\n return core.errors.maximumError({ maximum: schema.maximum, length: value, pointer });\n }\n if (schema.maximum && schema.exclusiveMaximum === true && schema.maximum === value) {\n return core.errors.maximumError({ maximum: schema.maximum, length: value, pointer });\n }\n return undefined;\n },\n maxItems: (core, schema, value, pointer) => {\n if (isNaN(schema.maxItems)) {\n return undefined;\n }\n if (schema.maxItems < value.length) {\n return core.errors.maxItemsError({\n maximum: schema.maxItems,\n length: value.length,\n pointer\n });\n }\n return undefined;\n },\n maxLength: (core, schema, value, pointer) => {\n if (isNaN(schema.maxLength)) {\n return undefined;\n }\n const lengthOfString = ucs2decode(value).length;\n if (schema.maxLength < lengthOfString) {\n return core.errors.maxLengthError({\n maxLength: schema.maxLength,\n length: lengthOfString,\n pointer\n });\n }\n return undefined;\n },\n maxProperties: (core, schema, value, pointer) => {\n const propertyCount = Object.keys(value).length;\n if (isNaN(schema.maxProperties) === false && schema.maxProperties < propertyCount) {\n return core.errors.maxPropertiesError({\n maxProperties: schema.maxProperties,\n length: propertyCount,\n pointer\n });\n }\n return undefined;\n },\n minLength: (core, schema, value, pointer) => {\n if (isNaN(schema.minLength)) {\n return undefined;\n }\n const lengthOfString = ucs2decode(value).length;\n if (schema.minLength > lengthOfString) {\n if (schema.minLength === 1) {\n return core.errors.minLengthOneError({\n minLength: schema.minLength,\n length: lengthOfString,\n pointer\n });\n }\n return core.errors.minLengthError({\n minLength: schema.minLength,\n length: lengthOfString,\n pointer\n });\n }\n return undefined;\n },\n minimum: (core, schema, value, pointer) => {\n if (isNaN(schema.minimum)) {\n return undefined;\n }\n if (schema.minimum > value) {\n return core.errors.minimumError({ minimum: schema.minimum, length: value, pointer });\n }\n if (schema.exclusiveMinimum === true && schema.minimum === value) {\n return core.errors.minimumError({ minimum: schema.minimum, length: value, pointer });\n }\n return undefined;\n },\n minItems: (core, schema, value, pointer) => {\n if (isNaN(schema.minItems)) {\n return undefined;\n }\n if (schema.minItems > value.length) {\n if (schema.minItems === 1) {\n return core.errors.minItemsOneError({\n minItems: schema.minItems,\n length: value.length,\n pointer\n });\n }\n return core.errors.minItemsError({\n minItems: schema.minItems,\n length: value.length,\n pointer\n });\n }\n return undefined;\n },\n minProperties: (core, schema, value, pointer) => {\n if (isNaN(schema.minProperties)) {\n return undefined;\n }\n const propertyCount = Object.keys(value).length;\n if (schema.minProperties > propertyCount) {\n return core.errors.minPropertiesError({\n minProperties: schema.minProperties,\n length: propertyCount,\n pointer\n });\n }\n return undefined;\n },\n multipleOf: (core, schema, value, pointer) => {\n if (isNaN(schema.multipleOf)) {\n return undefined;\n }\n // https://github.com/cfworker/cfworker/blob/master/packages/json-schema/src/validate.ts#L1061\n // https://github.com/ExodusMovement/schemasafe/blob/master/src/compile.js#L441\n if (((value * FPP) % (schema.multipleOf * FPP)) / FPP !== 0) {\n return core.errors.multipleOfError({ multipleOf: schema.multipleOf, value, pointer });\n }\n // also check https://stackoverflow.com/questions/1815367/catch-and-compute-overflow-during-multiplication-of-two-large-integers\n return undefined;\n },\n not: (core, schema, value, pointer) => {\n const errors = [];\n if (core.validate(value, schema.not, pointer).length === 0) {\n errors.push(core.errors.notError({ value, not: schema.not, pointer }));\n }\n return errors;\n },\n oneOf: (core, schema, value, pointer) => {\n if (Array.isArray(schema.oneOf) === false) {\n return undefined;\n }\n schema = core.resolveOneOf(value, schema, pointer);\n if (isJSONError(schema)) {\n return schema;\n }\n return undefined;\n },\n pattern: (core, schema, value, pointer) => {\n const pattern = new RegExp(schema.pattern, \"u\");\n if (pattern.test(value) === false) {\n return core.errors.patternError({\n pattern: schema.pattern,\n description: schema.patternExample || schema.pattern,\n received: value,\n pointer\n });\n }\n return undefined;\n },\n patternProperties: (core, schema, value, pointer) => {\n const properties = schema.properties || {};\n const pp = schema.patternProperties;\n if (getTypeOf(pp) !== \"object\") {\n return undefined;\n }\n const errors = [];\n const keys = Object.keys(value);\n const patterns = Object.keys(pp).map((expr) => ({\n regex: new RegExp(expr),\n patternSchema: pp[expr]\n }));\n keys.forEach((key) => {\n let patternFound = false;\n for (let i = 0, l = patterns.length; i < l; i += 1) {\n if (patterns[i].regex.test(key)) {\n patternFound = true;\n const valErrors = core.validate(value[key], patterns[i].patternSchema, `${pointer}/${key}`);\n if (valErrors && valErrors.length > 0) {\n errors.push(...valErrors);\n }\n }\n }\n if (properties[key]) {\n return;\n }\n if (patternFound === false && schema.additionalProperties === false) {\n // this is an arrangement with additionalProperties\n errors.push(core.errors.patternPropertiesError({\n key,\n pointer,\n patterns: Object.keys(pp).join(\",\")\n }));\n }\n });\n return errors;\n },\n properties: (core, schema, value, pointer) => {\n const errors = [];\n const keys = Object.keys(schema.properties || {});\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (hasProperty(value, key)) {\n const itemSchema = core.step(key, schema, value, pointer);\n const keyErrors = core.validate(value[key], itemSchema, `${pointer}/${key}`);\n errors.push(...keyErrors);\n }\n }\n return errors;\n },\n // @todo move to separate file: this is custom keyword validation for JsonEditor.properties keyword\n propertiesRequired: (core, schema, value, pointer) => {\n const errors = [];\n const keys = Object.keys(schema.properties || {});\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (value[key] === undefined) {\n errors.push(core.errors.requiredPropertyError({ key, pointer }));\n }\n else {\n const itemSchema = core.step(key, schema, value, pointer);\n const keyErrors = core.validate(value[key], itemSchema, `${pointer}/${key}`);\n errors.push(...keyErrors);\n }\n }\n return errors;\n },\n required: (core, schema, value, pointer) => {\n if (Array.isArray(schema.required) === false) {\n return undefined;\n }\n return schema.required.map((property) => {\n if (!hasProperty(value, property)) {\n return core.errors.requiredPropertyError({ key: property, pointer });\n }\n return undefined;\n });\n },\n // @todo move to separate file: this is custom keyword validation for JsonEditor.required keyword\n requiredNotEmpty: (core, schema, value, pointer) => {\n if (Array.isArray(schema.required) === false) {\n return undefined;\n }\n return schema.required.map((property) => {\n if (value[property] == null || value[property] === \"\") {\n return core.errors.valueNotEmptyError({\n property,\n pointer: `${pointer}/${property}`\n });\n }\n return undefined;\n });\n },\n uniqueItems: (core, schema, value, pointer) => {\n if ((Array.isArray(value) && schema.uniqueItems) === false) {\n return undefined;\n }\n const errors = [];\n value.forEach((item, index) => {\n for (let i = index + 1; i < value.length; i += 1) {\n if (isSame(item, value[i])) {\n errors.push(core.errors.uniqueItemsError({\n pointer,\n itemPointer: `${pointer}/${index}`,\n duplicatePointer: `${pointer}/${i}`,\n value: JSON.stringify(item)\n }));\n }\n }\n });\n return errors;\n }\n};\nexport default KeywordValidation;\n","import Keywords from \"../../validation/keyword\";\nimport getTypeOf from \"../../getTypeOf\";\nconst KeywordValidation = {\n ...Keywords,\n // @draft >= 6\n contains: (core, schema, value, pointer) => {\n if (schema.contains === false) {\n return core.errors.containsArrayError({ pointer, value });\n }\n if (schema.contains === true) {\n if (Array.isArray(value) && value.length === 0) {\n return core.errors.containsAnyError({ pointer });\n }\n return undefined;\n }\n if (getTypeOf(schema.contains) !== \"object\") {\n // ignore invalid schema\n return undefined;\n }\n for (let i = 0; i < value.length; i += 1) {\n if (core.isValid(value[i], schema.contains)) {\n return undefined;\n }\n }\n return core.errors.containsError({ pointer, schema: JSON.stringify(schema.contains) });\n },\n exclusiveMaximum: (core, schema, value, pointer) => {\n if (isNaN(schema.exclusiveMaximum)) {\n return undefined;\n }\n if (schema.exclusiveMaximum <= value) {\n return core.errors.maximumError({\n maximum: schema.exclusiveMaximum,\n length: value,\n pointer\n });\n }\n return undefined;\n },\n exclusiveMinimum: (core, schema, value, pointer) => {\n if (isNaN(schema.exclusiveMinimum)) {\n return undefined;\n }\n if (schema.exclusiveMinimum >= value) {\n return core.errors.minimumError({\n minimum: schema.exclusiveMinimum,\n length: value,\n pointer\n });\n }\n return undefined;\n },\n if: (core, schema, value, pointer) => {\n if (schema.if == null) {\n return undefined;\n }\n const ifErrors = core.validate(value, schema.if, pointer);\n // console.log(\"if Errors\", value, ifErrors);\n if (ifErrors.length === 0 && schema.then) {\n return core.validate(value, schema.then, pointer);\n }\n if (ifErrors.length !== 0 && schema.else) {\n return core.validate(value, schema.else, pointer);\n }\n },\n maximum: (core, schema, value, pointer) => {\n if (isNaN(schema.maximum)) {\n return undefined;\n }\n if (schema.maximum && schema.maximum < value) {\n return core.errors.maximumError({ maximum: schema.maximum, length: value, pointer });\n }\n return undefined;\n },\n minimum: (core, schema, value, pointer) => {\n if (isNaN(schema.minimum)) {\n return undefined;\n }\n if (schema.minimum > value) {\n return core.errors.minimumError({ minimum: schema.minimum, length: value, pointer });\n }\n return undefined;\n },\n patternProperties: (core, schema, value, pointer) => {\n const properties = schema.properties || {};\n const pp = schema.patternProperties;\n if (getTypeOf(pp) !== \"object\") {\n return undefined;\n }\n const errors = [];\n const keys = Object.keys(value);\n const patterns = Object.keys(pp).map((expr) => ({\n regex: new RegExp(expr),\n patternSchema: pp[expr]\n }));\n keys.forEach((key) => {\n let patternFound = false;\n for (let i = 0, l = patterns.length; i < l; i += 1) {\n if (patterns[i].regex.test(key)) {\n patternFound = true;\n // for a boolean schema `false`, always invalidate\n if (patterns[i].patternSchema === false) {\n errors.push(core.errors.patternPropertiesError({\n key,\n pointer,\n patterns: Object.keys(pp).join(\",\")\n }));\n return;\n }\n const valErrors = core.validate(value[key], patterns[i].patternSchema, `${pointer}/${key}`);\n if (valErrors && valErrors.length > 0) {\n errors.push(...valErrors);\n }\n }\n }\n if (properties[key]) {\n return;\n }\n if (patternFound === false && schema.additionalProperties === false) {\n // this is an arrangement with additionalProperties\n errors.push(core.errors.patternPropertiesError({\n key,\n pointer,\n patterns: Object.keys(pp).join(\",\")\n }));\n }\n });\n return errors;\n },\n // @draft >= 6\n propertyNames: (core, schema, value, pointer) => {\n // bool schema\n if (schema.propertyNames === false) {\n // empty objects are valid\n if (Object.keys(value).length === 0) {\n return undefined;\n }\n return core.errors.invalidPropertyNameError({\n property: Object.keys(value),\n pointer,\n value\n });\n }\n if (schema.propertyNames === true) {\n return undefined;\n }\n if (getTypeOf(schema.propertyNames) !== \"object\") {\n // ignore invalid schema\n return undefined;\n }\n const errors = [];\n const properties = Object.keys(value);\n const propertySchema = { ...schema.propertyNames, type: \"string\" };\n properties.forEach((prop) => {\n const validationResult = core.validate(prop, propertySchema, `${pointer}/${prop}`);\n if (validationResult.length > 0) {\n errors.push(core.errors.invalidPropertyNameError({\n property: prop,\n pointer,\n validationError: validationResult[0],\n value: value[prop]\n }));\n }\n });\n return errors;\n }\n};\nexport default KeywordValidation;\n","import getTypeOf from \"./getTypeOf\";\n/**\n * Create a simple json schema for the given input data\n * @param data - data to get json schema for\n * @return schema\n */\nexport default function createSchemaOf(data) {\n const schema = {\n type: getTypeOf(data)\n };\n if (schema.type === \"object\") {\n schema.properties = {};\n Object.keys(data).forEach((key) => (schema.properties[key] = createSchemaOf(data[key])));\n }\n if (schema.type === \"array\" && data.length === 1) {\n schema.items = createSchemaOf(data[0]);\n }\n else if (schema.type === \"array\") {\n schema.items = data.map(createSchemaOf);\n }\n return schema;\n}\n","import getTypeOf from \"./getTypeOf\";\nimport createSchemaOf from \"./createSchemaOf\";\nimport errors from \"./validation/errors\";\nimport merge from \"./utils/merge\";\nimport { isJSONError } from \"./types\";\nconst stepType = {\n array: (core, key, schema, data, pointer) => {\n const itemsType = getTypeOf(schema.items);\n if (itemsType === \"object\") {\n // oneOf\n if (Array.isArray(schema.items.oneOf)) {\n return core.resolveOneOf(data[key], schema.items, pointer);\n }\n // anyOf\n if (Array.isArray(schema.items.anyOf)) {\n // schema of current object\n return core.resolveAnyOf(data[key], schema.items, pointer);\n }\n // allOf\n if (Array.isArray(schema.items.allOf)) {\n return core.resolveAllOf(data[key], schema.items, pointer);\n }\n // spec: ignore additionalItems, when items is schema-object\n return core.resolveRef(schema.items);\n }\n if (itemsType === \"array\") {\n // @draft >= 7 bool schema, items:[true, false]\n if (schema.items[key] === true) {\n return createSchemaOf(data[key]);\n }\n // @draft >= 7 bool schema, items:[true, false]\n if (schema.items[key] === false) {\n return errors.invalidDataError({\n key,\n value: data[key],\n pointer\n });\n }\n if (schema.items[key]) {\n return core.resolveRef(schema.items[key]);\n }\n if (schema.additionalItems === false) {\n return errors.additionalItemsError({\n key,\n value: data[key],\n pointer\n });\n }\n if (schema.additionalItems === true || schema.additionalItems === undefined) {\n return createSchemaOf(data[key]);\n }\n if (getTypeOf(schema.additionalItems) === \"object\") {\n return schema.additionalItems;\n }\n throw new Error(`Invalid schema ${JSON.stringify(schema, null, 4)} for ${JSON.stringify(data, null, 4)}`);\n }\n if (schema.additionalItems !== false && data[key]) {\n // @todo reevaluate: incomplete schema is created here\n // @todo support additionalItems: {schema}\n return createSchemaOf(data[key]);\n }\n return new Error(`Invalid array schema for ${key} at ${pointer}`);\n },\n object: (core, key, schema, data, pointer) => {\n if (Array.isArray(schema.oneOf)) {\n // update current schema\n const oneOfSchema = core.resolveOneOf(data, schema, pointer);\n // resolveOneOf does currently not apply merge with base schema\n schema = merge(schema, oneOfSchema);\n if (isJSONError(schema)) {\n return schema;\n }\n }\n if (Array.isArray(schema.anyOf)) {\n // update current schema\n schema = core.resolveAnyOf(data, schema, pointer);\n if (isJSONError(schema)) {\n return schema;\n }\n }\n if (Array.isArray(schema.allOf)) {\n // update current schema\n schema = core.resolveAllOf(data, schema, pointer);\n if (isJSONError(schema)) {\n return schema;\n }\n }\n let targetSchema;\n // step into object-properties\n if (schema.properties && schema.properties[key] !== undefined) {\n // @todo patternProperties also validate properties\n targetSchema = core.resolveRef(schema.properties[key]);\n if (isJSONError(targetSchema)) {\n return targetSchema;\n }\n // check if there is a oneOf selection, which must be resolved\n if (targetSchema && Array.isArray(targetSchema.oneOf)) {\n // @special case: this is a mix of a schema and optional definitions\n // we resolve the schema here and add the original schema to `oneOfSchema`\n let resolvedSchema = core.resolveOneOf(data[key], targetSchema, `${pointer}/${key}`);\n const oneOfIndex = targetSchema.oneOf.findIndex((s) => s === resolvedSchema);\n resolvedSchema = JSON.parse(JSON.stringify(resolvedSchema));\n resolvedSchema.variableSchema = true;\n resolvedSchema.oneOfIndex = oneOfIndex;\n resolvedSchema.oneOfSchema = targetSchema;\n return resolvedSchema;\n }\n // resolved schema or error\n if (targetSchema) {\n return targetSchema;\n }\n }\n // @draft <= 07\n const { dependencies } = schema;\n if (getTypeOf(dependencies) === \"object\") {\n const dependentProperties = Object.keys(dependencies).filter((propertyName) => \n // data[propertyName] !== undefined &&\n getTypeOf(dependencies[propertyName]) === \"object\");\n for (let i = 0, l = dependentProperties.length; i < l; i += 1) {\n const dependentProperty = dependentProperties[i];\n const schema = step(core, key, dependencies[dependentProperty], data, `${pointer}/${dependentProperty}`);\n if (!isJSONError(schema)) {\n return schema;\n }\n }\n }\n // @draft >= 07\n if (schema.if && (schema.then || schema.else)) {\n // console.log(\"test if-then-else\");\n const isValid = core.isValid(data, schema.if);\n if (isValid && schema.then) {\n const resolvedThen = step(core, key, schema.then, data, pointer);\n if (typeof resolvedThen.type === \"string\" && resolvedThen.type !== \"error\") {\n return resolvedThen;\n }\n }\n if (!isValid && schema.else) {\n const resolvedElse = step(core, key, schema.else, data, pointer);\n if (typeof resolvedElse.type === \"string\" && resolvedElse.type !== \"error\") {\n return resolvedElse;\n }\n }\n }\n // find matching property key\n if (getTypeOf(schema.patternProperties) === \"object\") {\n let regex;\n const patterns = Object.keys(schema.patternProperties);\n for (let i = 0, l = patterns.length; i < l; i += 1) {\n regex = new RegExp(patterns[i]);\n if (regex.test(key)) {\n return schema.patternProperties[patterns[i]];\n }\n }\n }\n if (getTypeOf(schema.additionalProperties) === \"object\") {\n return schema.additionalProperties;\n }\n if (schema.additionalProperties === true) {\n return createSchemaOf(data[key]);\n }\n return errors.unknownPropertyError({\n property: key,\n value: data,\n // pointer: `${pointer}/${key}`,\n pointer: `${pointer}`\n });\n }\n};\n/**\n * Returns the json-schema of the given object property or array item.\n * e.g. it steps by one key into the data\n *\n * This helper determines the location of the property within the schema (additional properties, oneOf, ...) and\n * returns the correct schema.\n *\n * @param core - validator\n * @param key - property-name or array-index\n * @param schema - json schema of current data\n * @param data - parent of key\n * @param [pointer] - pointer to schema and data (parent of key)\n * @return Schema or Error if failed resolving key\n */\nexport default function step(core, key, schema, data, pointer = \"#\") {\n // @draft >= 4 ?\n if (Array.isArray(schema.type)) {\n const dataType = getTypeOf(data);\n if (schema.type.includes(dataType)) {\n // @ts-ignore\n return stepType[dataType](core, `${key}`, schema, data, pointer);\n }\n return core.errors.typeError({\n value: data,\n pointer,\n expected: schema.type,\n received: dataType\n });\n }\n const expectedType = schema.type || getTypeOf(data);\n // @ts-ignore\n const stepFunction = stepType[expectedType];\n if (stepFunction) {\n return stepFunction(core, `${key}`, schema, data, pointer);\n }\n return new Error(`Unsupported schema type ${schema.type} for key ${key}`);\n}\n","import addRemoteSchema from \"../addRemoteSchema\";\nimport compileSchema from \"../draft06/compile\";\nimport { each } from \"../each\";\nimport { eachSchema } from \"../eachSchema\";\nimport ERRORS from \"../validation/errors\";\nimport FORMATS from \"../validation/format\";\nimport getSchema from \"../getSchema\";\nimport getTemplate from \"../getTemplate\";\nimport isValid from \"../isValid\";\nimport KEYWORDS from \"../draft06/validation/keyword\";\nimport merge from \"../utils/merge\";\nimport resolveAllOf from \"../resolveAllOf\";\nimport resolveAnyOf from \"../resolveAnyOf\";\nimport resolveOneOf from \"../resolveOneOf.strict\";\nimport resolveRef from \"../resolveRef.strict\";\nimport createSchemaOf from \"../createSchemaOf\";\nimport getChildSchemaSelection from \"../getChildSchemaSelection\";\nimport step from \"../step\";\nimport TYPES from \"../draft06/validation/type\";\nimport validate from \"../validate\";\nimport { Draft } from \"../draft\";\nconst draft07Config = {\n typeKeywords: {\n array: [\"enum\", \"contains\", \"items\", \"minItems\", \"maxItems\", \"uniqueItems\", \"not\", \"if\"],\n boolean: [\"enum\", \"not\"],\n object: [\n \"additionalProperties\",\n \"dependencies\",\n \"enum\",\n \"format\",\n \"minProperties\",\n \"maxProperties\",\n \"patternProperties\",\n \"properties\",\n \"propertyNames\",\n \"required\",\n \"not\",\n \"oneOf\",\n \"allOf\",\n \"anyOf\",\n \"if\"\n ],\n string: [\n \"enum\",\n \"format\",\n \"maxLength\",\n \"minLength\",\n \"pattern\",\n \"not\",\n \"oneOf\",\n \"allOf\",\n \"anyOf\",\n \"if\"\n ],\n number: [\n \"enum\",\n \"exclusiveMaximum\",\n \"exclusiveMinimum\",\n \"format\",\n \"maximum\",\n \"minimum\",\n \"multipleOf\",\n \"not\",\n \"oneOf\",\n \"allOf\",\n \"anyOf\",\n \"if\"\n ],\n null: [\"enum\", \"format\", \"not\", \"oneOf\", \"allOf\", \"anyOf\"]\n },\n validateKeyword: KEYWORDS,\n validateType: TYPES,\n validateFormat: FORMATS,\n errors: ERRORS,\n addRemoteSchema,\n compileSchema,\n createSchemaOf,\n each,\n eachSchema,\n getChildSchemaSelection,\n getSchema,\n getTemplate,\n isValid,\n resolveAllOf,\n resolveAnyOf,\n resolveOneOf,\n resolveRef,\n step,\n validate\n};\nclass Draft07 extends Draft {\n constructor(schema, config = {}) {\n super(merge(draft07Config, config), schema);\n }\n}\nexport { Draft07, draft07Config };\n","/**\n * @todo: type is also a keyword, as is properties, items, etc\n *\n * An instance has one of six primitive types (http://json-schema.org/latest/json-schema-core.html#rfc.section.4.2)\n * or seven in case of ajv https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md#type\n * 1 null, 2 boolean, 3 object, 4 array, 5 number, 6 string (7 integer)\n */\nconst validationType = {\n array: (core, schema, value, pointer) => core.typeKeywords.array\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer)),\n object: (core, schema, value, pointer) => core.typeKeywords.object\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer)),\n string: (core, schema, value, pointer) => core.typeKeywords.string\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer)),\n integer: (core, schema, value, pointer) => core.typeKeywords.number\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer)),\n number: (core, schema, value, pointer) => core.typeKeywords.number\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer)),\n boolean: (core, schema, value, pointer) => core.typeKeywords.boolean\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer)),\n null: (core, schema, value, pointer) => core.typeKeywords.null\n .filter((key) => schema && schema[key] != null)\n .map((key) => core.validateKeyword[key](core, schema, value, pointer))\n};\nexport default validationType;\n","/**\n * register a json-schema to be referenced from another json-schema\n * @param url base-url of json-schema (aka id)\n * @param schema\n */\nexport default function addRemoteSchema(draft, url, schema) {\n schema.id = schema.id || url;\n draft.remotes[url] = draft.compileSchema(schema);\n}\n","import getTypeOf from \"./getTypeOf\";\n/**\n * Iterates over data, retrieving its schema\n *\n * @param core - validator\n * @param data - the data to iterate\n * @param callback - will be called with (schema, data, pointer) on each item\n * @param [schema] - the schema matching the data. Defaults to rootSchema\n * @param [pointer] - pointer to current data. Default to rootPointer\n */\nexport function each(core, data, callback, schema = core.rootSchema, pointer = \"#\") {\n schema = core.resolveRef(schema);\n callback(schema, data, pointer);\n const dataType = getTypeOf(data);\n if (dataType === \"object\") {\n Object.keys(data).forEach((key) => {\n const nextSchema = core.step(key, schema, data, pointer); // not save\n const next = data[key]; // save\n core.each(next, callback, nextSchema, `${pointer}/${key}`);\n });\n }\n else if (dataType === \"array\") {\n data.forEach((next, key) => {\n const nextSchema = core.step(key, schema, data, pointer);\n core.each(next, callback, nextSchema, `${pointer}/${key}`);\n });\n }\n}\n","import { isJSONError } from \"./types\";\n/**\n * Returns a list of possible child-schemas for the given property key. In case of a oneOf selection, multiple schemas\n * could be added at the given property (e.g. item-index), thus an array of options is returned. In all other cases\n * a list with a single item will be returned\n *\n * @param core - core to use\n * @param property - parent schema of following property\n * @param [schema] - parent schema of following property\n * @return\n */\nexport default function getChildSchemaSelection(core, property, schema = core.rootSchema) {\n const result = core.step(property, schema, {}, \"#\");\n if (isJSONError(result)) {\n if (result.code === \"one-of-error\") {\n return result.data.oneOf.map((item) => core.resolveRef(item));\n }\n return result;\n }\n return [result];\n}\n","/**\n * Test if the data is valid according to the given schema\n *\n * @param core - validator\n * @param value - value to validate\n * @param [schema] - json schema\n * @param [pointer] - json pointer pointing to value\n * @return if schema does match given value\n */\nexport default function isValid(core, value, schema = core.rootSchema, pointer = \"#\") {\n return core.validate(value, schema, pointer).length === 0;\n}\n","import copy from \"./utils/copy\";\nimport merge from \"./utils/merge\";\nimport errors from \"./validation/errors\";\nexport default function resolveAnyOf(core, data, schema = core.rootSchema, pointer = \"#\") {\n let found = false;\n let mergedSchema = copy(schema);\n for (let i = 0; i < schema.anyOf.length; i += 1) {\n const anyOfSchema = core.resolveRef(schema.anyOf[i]);\n if (core.isValid(data, schema.anyOf[i], pointer)) {\n found = true;\n mergedSchema = merge(mergedSchema, anyOfSchema);\n }\n }\n if (found === false) {\n return errors.anyOfError({ value: data, pointer, anyOf: JSON.stringify(schema.anyOf) });\n }\n delete mergedSchema.anyOf;\n return mergedSchema;\n}\n","export default function resolveRef(schema, rootSchema) {\n if (schema == null || schema.$ref == null) {\n return schema;\n }\n if (schema.getRoot) {\n // we actually always need to resolve the schema like this, since returned subschemas\n // must resolve relative from their schema\n const resolvedSchema = schema.getRoot().getRef(schema);\n // console.log(schema.$ref, \"=>\", resolvedSchema);\n return resolvedSchema;\n }\n // tryout - this should never be called, except we missed something\n const resolvedSchema = rootSchema.getRef(schema);\n return resolvedSchema;\n}\n","import getTypeOf from \"./getTypeOf\";\nimport { errorOrPromise } from \"./utils/filter\";\nimport flattenArray from \"./utils/flattenArray\";\nimport { isJSONError } from \"./types\";\nimport equal from \"fast-deep-equal\";\nfunction getJsonSchemaType(value, expectedType) {\n const jsType = getTypeOf(value);\n if (jsType === \"number\" &&\n (expectedType === \"integer\" ||\n (Array.isArray(expectedType) && expectedType.includes(\"integer\")))) {\n return Number.isInteger(value) || isNaN(value) ? \"integer\" : \"number\";\n }\n return jsType;\n}\n/**\n * Validate data by a json schema\n *\n * @param core - validator\n * @param value - value to validate\n * @param [schema] - json schema, defaults to rootSchema\n * @param [pointer] - json pointer pointing to value (used for error-messages only)\n * @return list of errors or empty\n */\nexport default function validate(core, value, schema = core.rootSchema, pointer = \"#\") {\n schema = core.resolveRef(schema);\n // this is a high level v7 schema validation\n if (getTypeOf(schema) === \"boolean\") {\n if (schema) {\n return [];\n }\n return [core.errors.invalidDataError({ value, pointer })];\n }\n if (isJSONError(schema)) {\n return [schema];\n }\n // @draft >= 6 const\n if (schema.const !== undefined) {\n if (equal(schema.const, value)) {\n return [];\n }\n return [core.errors.constError({ value, expected: schema.const, pointer })];\n }\n const receivedType = getJsonSchemaType(value, schema.type);\n const expectedType = schema.type || receivedType;\n if (receivedType !== expectedType &&\n (!Array.isArray(expectedType) || !expectedType.includes(receivedType))) {\n return [\n core.errors.typeError({\n received: receivedType,\n expected: expectedType,\n value,\n pointer\n })\n ];\n }\n if (core.validateType[receivedType] == null) {\n return [core.errors.invalidTypeError({ receivedType, pointer })];\n }\n const errors = flattenArray(core.validateType[receivedType](core, schema, value, pointer));\n // also promises may be passed along (validateAsync)\n // @ts-ignore\n return errors.filter(errorOrPromise);\n}\n","export class Draft {\n constructor(config, schema) {\n /** cache for remote schemas */\n this.remotes = {};\n /** error creators by id */\n this.errors = {};\n /** map for valid keywords of a type */\n this.typeKeywords = {};\n /** keyword validators */\n this.validateKeyword = {};\n /** type validators */\n this.validateType = {};\n /** format validators */\n this.validateFormat = {};\n this.config = config;\n this.typeKeywords = JSON.parse(JSON.stringify(config.typeKeywords));\n this.validateKeyword = Object.assign({}, config.validateKeyword);\n this.validateType = Object.assign({}, config.validateType);\n this.validateFormat = Object.assign({}, config.validateFormat);\n this.errors = Object.assign({}, config.errors);\n this.setSchema(schema);\n }\n get rootSchema() {\n return this.__rootSchema;\n }\n set rootSchema(rootSchema) {\n if (rootSchema == null) {\n return;\n }\n this.__rootSchema = this.config.compileSchema(this, rootSchema);\n }\n /**\n * register a json-schema to be referenced from another json-schema\n * @param url - base-url of json-schema (aka id)\n * @param schema - json-schema root\n */\n addRemoteSchema(url, schema) {\n this.config.addRemoteSchema(this, url, schema);\n }\n compileSchema(schema) {\n var _a;\n return this.config.compileSchema(this, schema, (_a = this.rootSchema) !== null && _a !== void 0 ? _a : schema);\n }\n createSchemaOf(data) {\n return this.config.createSchemaOf(data);\n }\n /**\n * Iterates over data, retrieving its schema\n *\n * @param data - the data to iterate\n * @param callback - will be called with (schema, data, pointer) on each item\n * @param [schema] - the schema matching the data. Defaults to rootSchema\n * @param [pointer] - pointer to current data. Default to rootPointer\n */\n each(data, callback, schema, pointer) {\n return this.config.each(this, data, callback, schema, pointer);\n }\n eachSchema(callback, schema = this.rootSchema) {\n return this.config.eachSchema(schema, callback);\n }\n getChildSchemaSelection(property, schema) {\n return this.config.getChildSchemaSelection(this, property, schema);\n }\n /**\n * Returns the json-schema of a data-json-pointer.\n * Notes\n * - Uses core.step to walk through data and schema\n *\n * @param pointer - json pointer in data to get the json schema for\n * @param [data] - the data object, which includes the json pointers value. This is optional, as\n * long as no oneOf, anyOf, etc statement is part of the pointers schema\n * @param [schema] - the json schema to iterate. Defaults to core.rootSchema\n * @return json schema object of the json-pointer or an error\n */\n getSchema(pointer = \"#\", data, schema) {\n return this.config.getSchema(this, pointer, data, schema);\n }\n /**\n * Create data object matching the given schema\n *\n * @param [data] - optional template data\n * @param [schema] - json schema, defaults to rootSchema\n * @return created template data\n */\n getTemplate(data, schema, opts) {\n return this.config.getTemplate(this, data, schema, opts);\n }\n isValid(data, schema, pointer) {\n return this.config.isValid(this, data, schema, pointer);\n }\n resolveAnyOf(data, schema, pointer) {\n return this.config.resolveAnyOf(this, data, schema, pointer);\n }\n resolveAllOf(data, schema, pointer) {\n return this.config.resolveAllOf(this, data, schema, pointer);\n }\n resolveRef(schema) {\n return this.config.resolveRef(schema, this.rootSchema);\n }\n resolveOneOf(data, schema, pointer) {\n return this.config.resolveOneOf(this, data, schema, pointer);\n }\n setSchema(schema) {\n this.rootSchema = schema;\n }\n /**\n * Returns the json-schema of the given object property or array item.\n * e.g. it steps by one key into the data\n *\n * This helper determines the location of the property within the schema (additional properties, oneOf, ...) and\n * returns the correct schema.\n *\n * @param key - property-name or array-index\n * @param schema - json schema of current data\n * @param data - parent of key\n * @param [pointer] - pointer to schema and data (parent of key)\n * @return Schema or Error if failed resolving key\n */\n step(key, schema, data, pointer) {\n return this.config.step(this, key, schema, data, pointer);\n }\n /**\n * Validate data by a json schema\n *\n * @param value - value to validate\n * @param [schema] - json schema, defaults to rootSchema\n * @param [pointer] - json pointer pointing to value (used for error-messages only)\n * @return list of errors or empty\n */\n validate(data, schema, pointer) {\n return this.config.validate(this, data, schema, pointer);\n }\n}\n","import { Draft, draft07Config, JSONError } from \"json-schema-library\";\nimport {JSONSchema} from \"json-schema-library/lib/types\";\nimport {defaultType} from \"../global/types/ModuleTypes\";\n\nexport class ValidatorService {\n\n private static type: defaultType = {\n init : draft07Config\n };\n /**\n * Validate data with JSON Schema\n * @param type\n * @param schema\n * @param data\n * @return boolean\n */\n static validate(type: string, schema: JSONSchema, data: Object): boolean {\n const jsonSchema: Draft = new Draft(this.type[type], schema);\n const errors: JSONError[] = jsonSchema.validate(data);\n\n if (errors.length > 0) {\n if (process.env.DEBUG === \"true\") {\n console.table(errors);\n }\n console.error('Schema Validation Errors!');\n return false;\n }\n\n return true;\n }\n}\n","import {additionalInformation} from \"../../global/types/ModuleTypes\";\nimport {LTPLayerAddInfo} from \"./LTPlayerAddInfoManager\";\n\nexport namespace LTPlayerAdditionalInfo {\n\n export class Desktop {\n set(controller: LTPLayerAddInfo.Controller) {\n\n const playerContainer = controller.plyr.elements.container;\n const playerControlsContainer = controller.plyr.elements.controls;\n let additionalInfoBodyOut: Element = playerContainer.nextElementSibling;\n let additionalInfoBodyIn: Element = playerControlsContainer.querySelector('.lt-player__additional-info');\n let instance = controller;\n\n\n const getInfoButtons = (selector: Element): NodeList => {\n\n if (!selector) {\n return null\n }\n return selector.querySelectorAll('button');\n }\n\n let buttons: NodeList = null;\n\n const infoButtonsOut: NodeList = getInfoButtons(additionalInfoBodyOut);\n const infoButtonsIn: NodeList = getInfoButtons(additionalInfoBodyIn);\n\n if (!infoButtonsOut) {\n buttons = infoButtonsIn;\n } else {\n buttons = infoButtonsOut;\n }\n\n if (buttons.length === 0) {\n return\n }\n\n const createInformationModal = (info: additionalInformation, key: string) => {\n let modalTemplate = controller.templateService.getAdditionalInfo({\n desktop : true,\n modal : true,\n id : `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,\n data : info\n })\n\n document.querySelector('body').insertAdjacentHTML(\"afterend\", modalTemplate);\n }\n\n buttons.forEach((button: HTMLElement) => {\n\n button.addEventListener('click', function (event) {\n\n event.preventDefault();\n\n let targetModal = button.dataset.ltTarget;\n let data = instance.additionalData;\n\n if (data[targetModal] !== undefined) {\n createInformationModal(data[targetModal], targetModal)\n }\n\n let modal = document.querySelector(`.lt-modal-${targetModal}-${instance.playerInstance.playerConfig.getPlayerId()}`);\n\n if (modal) {\n modal.classList.add('player-lt__show-modal');\n }\n\n window.Player.players.forEach( item => {item.plyr.pause()})\n })\n })\n }\n\n windowDesktopEvents(event: MouseEvent) {\n const modals = document.querySelectorAll('.player-lt__modal');\n if (modals.length !== 0) {\n modals.forEach(modal => {\n if (modal.classList.contains('player-lt__show-modal')) {\n let target = event.target as HTMLElement;\n if (target.classList.contains('player-lt__show-modal') || target.classList.contains('player-lt__close-button')) {\n modal.classList.remove('player-lt__show-modal');\n document.querySelectorAll(\".player-lt__modal\").forEach(el => el.remove());\n }\n }\n })\n }\n }\n\n\n }\n\n export class Mobile {\n set(controller: LTPLayerAddInfo.Controller) {\n const playerContainer = controller.plyr.elements.container;\n const playerControlsContainer = controller.plyr.elements.controls;\n let additionalInfoBody: Element = playerContainer.querySelector('.lt-player__additional-info-mobile');\n let instance = controller;\n let __this = this;\n\n let buttons: NodeList = additionalInfoBody.querySelectorAll('button');\n\n if (buttons.length === 0) {\n return\n }\n\n const createInformationModal = (info: additionalInformation, key: string) => {\n let modalTemplate = instance.templateService.getAdditionalInfo({\n mobile : true,\n modal : true,\n data : info,\n [controller.device] : true\n })\n\n const playerControlsContainer = instance.plyr.elements.controls;\n const modal = playerControlsContainer.querySelector('.player-lt__modal__mobile');\n modal.innerHTML = modalTemplate;\n }\n\n buttons.forEach((button: HTMLElement) => {\n let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(button);\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileAdditionalInfoButtons(event) {\n event.preventDefault();\n\n controller.playerInstance.plyr.elements.controls.classList.add('plyr__controls-enable-addInfo');\n\n let targetModal = button.dataset.ltTarget;\n let data = instance.additionalData;\n\n\n if (data[targetModal] !== undefined) {\n createInformationModal(data[targetModal], targetModal)\n }\n\n playerControlsContainer.classList.add('player-lt__modal__mobile-show-modal');\n\n let mobileModal: HTMLElement = playerControlsContainer.querySelector('.player-lt__modal__mobile');\n\n let backgroundModal = playerControlsContainer.querySelector('.player-lt__modal__mobile__background');\n\n mobileModal.classList.remove('d-none');\n\n setTimeout(() => {\n mobileModal.style.bottom = String(0);\n }, 50)\n\n if (backgroundModal) {\n backgroundModal.classList.remove('d-none')\n }\n\n if (mobileModal) {\n mobileModal.classList.add('player-lt__modal__mobile-show-modal');\n }\n\n window.Player.players.forEach( item => {item.plyr.pause()});\n\n __this.dragCloseModal(controller);\n })\n }\n })\n\n\n }\n\n dragCloseModal(controller: LTPLayerAddInfo.Controller) {\n\n const playerControlsContainer = controller.plyr.elements.controls;\n const modalHeader = playerControlsContainer.querySelector('.player-lt__mobile__modal-header');\n const background = playerControlsContainer.querySelector('.player-lt__modal__mobile__background');\n const modal: HTMLElement = playerControlsContainer.querySelector('.player-lt__modal__mobile');\n\n const closeModal = () => {\n if (playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {\n\n modal.style.removeProperty('bottom')\n playerControlsContainer.classList.remove('plyr__controls-enable-addInfo')\n\n\n setTimeout(() => {\n const modalBody = playerControlsContainer.querySelector('.player-lt__modal__mobile');\n\n playerControlsContainer.classList.remove('player-lt__modal__mobile-show-modal');\n modalBody.classList.remove('player-lt__modal__mobile-show-modal');\n modalBody.classList.add('d-none');\n\n if (background) {\n background.classList.add('d-none');\n }\n }, 150)\n\n }\n }\n\n if (modalHeader) {\n let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(modalHeader);\n if (mobileEvent) {\n mobileEvent.on('pan', function LTPlayerMobileDragDownModal() {\n closeModal();\n if (controller.plyr.paused) {\n controller.plyr.play();\n }\n })\n }\n }\n if (background) {\n let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(background);\n if (mobileEvent) {\n mobileEvent.on('singletap', function LTPlayerMobileCloseModal() {\n closeModal();\n if (controller.plyr.paused) {\n controller.plyr.play();\n }\n })\n }\n }\n }\n }\n}\n","import {additionalInformation, defaultType} from \"../../global/types/ModuleTypes\";\nimport {TemplateService} from \"../../services/TemplateService\";\nimport {IconsService} from \"../../services/IconsService\";\nimport Plyr, {PlyrEvent} from \"plyr\";\nimport {LTPlayer} from \"../LTPlayerType\";\nimport {LTPlayerAdditionalInfo} from \"./LTPlayerAdditionalInfoEvents\";\n\nexport class LTPlayerAddInfoManager {\n container: HTMLElement\n additionalData: additionalInformation = {};\n playerId: number\n templateService : TemplateService\n iconService: IconsService\n plyr : Plyr\n playerInstance: LTPlayer.PortraitType | LTPlayer.LandscapeType\n players: Array<any>;\n device: string\n addInfoType: LTPLayerAddInfo.Landscape | LTPLayerAddInfo.Portrate\n desktopEvents: LTPlayerAdditionalInfo.Desktop;\n mobileEvents: LTPlayerAdditionalInfo.Mobile;\n\n\n\n constructor() {\n this.setDesktopEvents();\n this.setMobileEvents();\n }\n\n\n setDesktopEvents() {\n this.desktopEvents = new LTPlayerAdditionalInfo.Desktop();\n }\n\n setMobileEvents() {\n this.mobileEvents = new LTPlayerAdditionalInfo.Mobile();\n }\n}\n\n\nexport namespace LTPLayerAddInfo {\n\n export class Controller extends LTPlayerAddInfoManager {\n activePlayer: Plyr;\n\n set(container: HTMLElement) {\n this.container = container;\n this.setDataContent();\n }\n\n private setDataContent() {\n const items: HTMLCollection = this.container.children;\n\n if (items.length === 0) {\n return;\n }\n\n Array.from(items).forEach((item: HTMLElement) => {\n if (item.hasAttribute('data-lt-player-additional-info-target')) {\n Object.assign(this.additionalData, {[item.dataset.ltPlayerAdditionalInfoTarget] : item.innerHTML})\n }\n })\n }\n\n init(player: LTPlayer.PortraitType | LTPlayer.LandscapeType, playerId: number, iconService: IconsService, templateService: TemplateService) {\n\n if (Object.keys(this.additionalData).length === 0) {\n return;\n }\n this.playerInstance = player;\n this.plyr = player.plyr;\n this.playerId = playerId;\n this.iconService = iconService;\n this.templateService = templateService;\n this.device = player.playerConfig.getDevice();\n this.setPlayerType();\n }\n\n\n setPlayerType() {\n switch (this.playerInstance.playerConfig.getPlayerType()) {\n case 1:\n this.addInfoType = new LTPLayerAddInfo.Portrate().setAddInfo(this);\n break\n case 2:\n this.addInfoType = new LTPLayerAddInfo.Landscape;\n break\n case '1':\n this.addInfoType = new LTPLayerAddInfo.Portrate().setAddInfo(this);\n break\n case '2':\n this.addInfoType = new LTPLayerAddInfo.Landscape;\n break\n case 'portrait':\n this.addInfoType = new LTPLayerAddInfo.Portrate().setAddInfo(this);\n break\n case 'landscape':\n this.addInfoType = new LTPLayerAddInfo.Landscape;\n break\n }\n }\n\n setCurrentPlayerPlay(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, event: PlyrEvent) {\n this.activePlayer = event.detail.plyr;\n console.log(this.activePlayer.elements.container)\n }\n remove(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {\n\n let modals = document.querySelectorAll('.player-lt__modal');\n\n if (modals.length !== 0) {\n modals.forEach(item => {\n item.remove();\n })\n }\n\n let container = instance.playerConfig.getPlayerElementContainer();\n\n let addContainer = container.querySelector('.lt-player__additional-info');\n\n addContainer.remove();\n }\n\n }\n\n export class Portrate extends Controller {\n\n controller: LTPLayerAddInfo.Controller\n\n setAddInfo(controller: LTPLayerAddInfo.Controller) {\n\n this.controller = controller;\n\n switch (this.controller.device) {\n case 'mobile':\n this.mobile();\n break\n case 'desktop':\n this.desktop();\n break\n }\n\n return this;\n }\n\n\n mobile() {\n\n const icons: defaultType = this.controller.iconService.getIconsByComponent('additionalInfo');\n const playerControlsContainer = this.controller.plyr.elements.controls;\n const playerVideoContent = playerControlsContainer.querySelector('.content__body');\n\n let templateData: { target: string; icon: any; }[] = [];\n\n Object.keys(this.controller.additionalData).forEach(item => {\n switch (item) {\n case 'abstract':\n templateData.push({target: item, icon: icons['file-text']});\n break\n case 'bio':\n templateData.push({target: item, icon: icons['user']});\n break\n case 'institution':\n templateData.push({target: item, icon: icons['university']});\n break\n default:\n templateData.push({target: item, icon: null});\n }\n })\n\n let buttonsTemplate: string = '';\n buttonsTemplate = this.controller.templateService.getAdditionalInfoButtons({mobile: true, exist: 'true', buttons:templateData})\n playerVideoContent.insertAdjacentHTML(\"afterend\", buttonsTemplate);\n\n this.mobileEvents.set(this.controller);\n }\n\n\n desktop() {\n const playerContainer = this.controller.plyr.elements.container;\n const icons: defaultType = this.controller.iconService.getIconsByComponent('additionalInfo');\n\n let templateData: { target: string; icon: any; }[] = [];\n\n Object.keys(this.controller.additionalData).forEach(item => {\n switch (item) {\n case 'abstract':\n templateData.push({target: item, icon: icons['file-text']});\n break\n case 'bio':\n templateData.push({target: item, icon: icons['user']});\n break\n case 'institution':\n templateData.push({target: item, icon: icons['university']});\n break\n default:\n templateData.push({target: item, icon: null});\n }\n })\n\n let buttonsTemplate: string = '';\n\n buttonsTemplate = this.controller.templateService.getAdditionalInfoButtons({\n desktop: true,\n exist: 'true',\n buttons: templateData\n });\n\n this.controller.playerInstance.windowService.setEventAddInfo(buttonsTemplate, this.desktopEvents, this.controller);\n }\n }\n\n export class Landscape extends Controller {\n controller: LTPLayerAddInfo.Controller\n setAddInfo() {\n\n }\n mobileTouchEvent() {\n\n }\n\n\n }\n}\n","import {LTPlayer} from \"./LTPlayerType\";\nimport {defaultType, playerConfigType, PlayerType, urlVideoType} from \"../global/types/ModuleTypes\";\nimport {Helper} from \"../services/Helper\";\nimport {ValidatorService} from \"../services/ValidatorService\";\nimport * as playerSchema from \"../json-schema/player-config.json\";\nimport {LTPLayerAddInfo} from \"./addInfo/LTPlayerAddInfoManager\";\nimport Plyr from \"plyr\";\n\nexport class LTPlayerSetup {\n additionalInfoService: LTPLayerAddInfo.Controller;\n\n init(playerConfig?: playerConfigType): Promise<any> {\n\n Helper.setDebugEvent('Start init player', 'info');\n\n if (!playerConfig || Object.keys(playerConfig).length === 0) {\n Helper.setDebugEvent('Lt Player: The config object is empty', 'error')\n Helper.setDebugEvent('Use one of below examples', 'error')\n Helper.setDebugEvent({\n Example_1: 'Use object to configure player (Player.init({versions : \"Player versions\", body : {player configure body}}))',\n Example_2: 'Use HTML dataset attribute to configure Player (data-lt-player-config=\"{versions : \"Player versions\", body : {player configure body}\"))'\n }, 'table')\n return;\n }\n\n const validateResult = ValidatorService.validate('init', playerSchema, playerConfig);\n\n if (!validateResult) {\n return;\n }\n\n Helper.setDebugEvent('Validate player config', 'info');\n\n if (typeof playerConfig.body.playerContainer === \"string\") {\n\n const playerContainerPlayer = document.querySelector(`.${playerConfig.body.playerContainer}, #${playerConfig.body.playerContainer}`);\n\n if (!playerContainerPlayer) {\n console.error(`No Element found with ${playerConfig.body.playerContainer}`);\n return;\n }\n\n playerConfig.body.playerContainer = playerContainerPlayer;\n }\n\n\n if (process.env.DEBUG === \"true\") {\n console.info('Setup Player Container');\n }\n\n playerConfig.body.device = Helper.getDevice();\n\n if (process.env.DEBUG === \"true\") {\n console.info(`Set Device - ${playerConfig.body.device}`);\n }\n\n const playerContainer = playerConfig.body.playerContainer;\n\n playerContainer.classList.add(`lt-player`);\n\n this.setAdditionalInfo(playerConfig);\n\n if (process.env.DEBUG === \"true\") {\n console.info(`Set Additional Info`);\n }\n\n if (!playerConfig.body.playerType) {\n return new Promise(resolve => {\n playerConfig.body.playerType = this.getVideoTypeByUrl(playerConfig.body.videoUrl).then(response => {\n playerConfig.body.playerType = response;\n resolve(this.setType(playerConfig, playerContainer))\n });\n })\n } else {\n\n return new Promise(resolve => {\n resolve(this.setType(playerConfig, playerContainer))\n });\n }\n }\n\n setType(playerConfig: playerConfigType, playerContainer: HTMLElement) {\n\n let player: LTPlayer.LandscapeType | LTPlayer.PortraitType = this.setPlayerType(playerConfig.body.playerType);\n\n if (!player) {\n console.error('No \"playerType\" is set in config!')\n return;\n }\n\n let setupPlayer = player.setup(playerConfig, this.additionalInfoService);\n\n if (process.env.DEBUG === \"true\") {\n console.info(`Finish Setup Player`);\n }\n\n\n if (!setupPlayer) {\n return;\n }\n\n if (process.env.DEBUG === \"true\") {\n player.plyr.on('ready', () => {\n console.log(`Player id=${player.playerConfig.getPlayerId()} finish setup`);\n })\n }\n\n playerConfig.body.playerContainer = player;\n this.additionalInfoService = null;\n\n return player;\n }\n\n getVideoTypeByUrl(url: string) {\n\n let videoData = Helper.processConfigData(url) as urlVideoType;\n\n\n const processEmbed = () => {\n\n const embedRequest = (url: string) =>{\n return new Promise((resolveOuter, reject) => {\n fetch(`https://vimeo.com/api/oembed.json?url=${url}`).then(\n response => {\n resolveOuter(response.json());\n },\n error => {\n reject(error);\n })\n });\n }\n\n\n videoData.embedId = Helper.getEmbeddedID(url);\n videoData.embedHash = Helper.getEmbeddedHash(url);\n\n\n return embedRequest(url).then(\n respose => {\n return new Promise((resolve, reject) => {\n\n let res: any = respose;\n\n if (res.width > res.height) {\n resolve('landscape');\n } else {\n resolve('portrait');\n }\n });\n\n });\n\n }\n\n const processVideo = () => {\n let videoTag = document.createElement('video');\n videoTag.src = url;\n return new Promise((resolve) => {\n videoTag.addEventListener( \"loadedmetadata\", function (e) {\n if (this.videoWidth > this.videoHeight) {\n resolve('landscape');\n } else {\n resolve('portrait');\n }\n }, false );\n })\n\n\n }\n\n switch (videoData.type) {\n\n case 'embedded':\n return processEmbed()\n case 'video':\n return processVideo();\n\n }\n\n }\n\n\n\n\n /**\n * Set Additional Info\n * @param playerConfig\n */\n setAdditionalInfo(playerConfig: defaultType): void {\n\n const additionalInfoContainer:HTMLElement = playerConfig.body.playerContainer.querySelector('.lt-player-additional-info');\n\n if (!additionalInfoContainer) {\n this.additionalInfoService = null;\n return;\n }\n\n this.additionalInfoService = new LTPLayerAddInfo.Controller();\n this.additionalInfoService.set(additionalInfoContainer);\n\n return;\n }\n\n /**\n * Set player type\n * @param type\n */\n setPlayerType(type: number | string): LTPlayer.PortraitType | LTPlayer.LandscapeType {\n\n let player: PlayerType = null;\n\n switch (type) {\n case \"1\":\n player = new LTPlayer.PortraitType();\n break\n case \"2\":\n player = new LTPlayer.LandscapeType();\n break\n case 1:\n player = new LTPlayer.PortraitType();\n break\n case 2:\n player = new LTPlayer.LandscapeType()\n break\n case 'portrait':\n player = new LTPlayer.PortraitType();\n break\n case 'landscape':\n player = new LTPlayer.LandscapeType()\n break\n }\n\n return player;\n }\n\n\n}\n","import {playerConfigType, playerManger} from \"../global/types/ModuleTypes\";\nimport {LTPlayer} from \"./LTPlayerType\"\nimport {LTPlayerSetup} from \"./LTPlayerSetup\";\nexport class LTPlayerManager {\n\n /**\n * All players instance\n */\n players: Array<LTPlayer.LandscapeType| LTPlayer.PortraitType> = [];\n\n\n /**\n * Create a new instance of the Player LTPlayerManager\n *\n */\n constructor() {\n this.initPageDomElements();\n }\n\n /**\n * Init player by default names\n */\n initPageDomElements() {\n\n let domElements: NodeListOf<HTMLElement>;\n\n domElements = document.querySelectorAll(`.${process.env.DEFAULT_DOM_HTML_ELEMENTS}`);\n\n if (domElements.length === 0) {\n domElements = document.querySelectorAll('[data-lt-player-config]');\n }\n\n if (domElements.length === 0) {\n // console.error(`Lt Player: No Element or Node List Of Element, found in dom!`);\n // console.error('Use one of below examples')\n // console.table({\n // Example_1: '<div class=\"lt-player\" data-lt-player-config=\"{config}\"> </div>',\n // Example_2: '<div data-lt-player-config=\"{config}\"> </div>'\n // })\n return;\n }\n\n domElements.forEach(element => {\n this.initBySelector(element);\n })\n\n return;\n\n }\n\n /**\n * Init player by identifier\n * @param identifier\n */\n initByClassOrID(identifier: string) {\n\n if (typeof identifier !== 'string') {\n console.error('Identifier has another type of');\n return;\n }\n\n let defaultSelector: HTMLElement = document.querySelector(`.${identifier}, #${identifier}`);\n\n\n if (!defaultSelector) {\n if (process.env.DEBUG === \"true\") {\n console.error(`No item with ${identifier} found`);\n }\n return;\n }\n return new Promise(resolve => {\n this.initBySelector(defaultSelector).then( result => {\n resolve(result);\n })\n })\n\n }\n\n /**\n * Init player by HTMLElement selector\n * @param selector\n */\n initBySelector(selector: HTMLElement) {\n let playerConfig = selector.dataset.ltPlayerConfig;\n\n if (playerConfig !== undefined) {\n\n const configData = JSON.parse(playerConfig);\n\n Object.assign(configData.body, {playerContainer: selector})\n\n return new Promise(resolve => {\n this.initPlayer(configData).then( result => {\n resolve(result);\n })\n })\n }\n\n console.error(`Lt Player: No \"data-lt-player-config\" attribute is set on element!`);\n console.log(selector)\n console.error('Use one of below examples')\n console.table({\n Example_1: '<div class=\"lt-player\" data-lt-player-config=\"{config}\"> </div>',\n })\n return;\n }\n\n /**\n * Init Player Instance, parse config\n * @param playerConfig\n * @protected\n */\n public initPlayer(playerConfig?: playerConfigType) {\n\n const setup = new LTPlayerSetup();\n\n return new Promise(resolve => {\n setup.init(playerConfig).then( result => {\n this.players.push(result);\n resolve(result);\n })\n })\n\n\n }\n\n /**\n * Get player instance\n * @return null | LTPlayer.LandscapeType | LTPlayer.PortraitType\n * @param player\n */\n getPlayer(player: string | Element | HTMLElement | number): null | LTPlayer.LandscapeType | LTPlayer.PortraitType {\n\n if (this.players.length === 0) {\n return null;\n }\n\n const getPlayerByID = (id: any) : null | LTPlayer.LandscapeType | LTPlayer.PortraitType => {\n\n let response = null;\n\n this.players.forEach(instance => {\n if (instance.playerConfig.getConfigData().playerId === id) {\n response = instance;\n }\n })\n\n return response;\n }\n\n const getPlayerByElement = (player : Element | HTMLElement) : null | LTPlayer.LandscapeType | LTPlayer.PortraitType => {\n\n let response = null;\n\n const playerInstance = (player as playerManger).playerManager;\n\n\n this.players.forEach(instance => {\n if (instance === playerInstance) {\n response = instance;\n }\n })\n\n return response;\n }\n\n if (typeof player === 'string') {\n return getPlayerByID(parseInt(player));\n }\n\n if (typeof player === 'number') {\n return getPlayerByID(player)\n }\n\n if (player instanceof Element) {\n return getPlayerByElement(player);\n }\n }\n\n /**\n * Pause all players\n */\n pauseAllPlayers() {\n this.players.forEach(instance => {\n if(instance.plyr.playing) {\n instance.plyr.pause();\n }\n })\n }\n\n /**\n * Stop all players\n */\n stopAllPlayers() {\n this.players.forEach(instance => {\n if(instance.plyr.playing) {\n instance.plyr.stop();\n }\n })\n }\n\n async destruct() {\n const destructInstance = async (instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) => {\n await instance.destruct();\n }\n\n const iterateInstances = async (array: Array<any>, callback:any): Promise<void> => {\n for (let index = 0; index < array.length; index++) {\n await callback(array[index]);\n }\n }\n\n const initDestruct = async (): Promise<void> => {\n await iterateInstances(this.players, async (callback: LTPlayer.PortraitType | LTPlayer.LandscapeType) => {\n await destructInstance(callback);\n })\n }\n\n\n return initDestruct().then(() => {\n this.players = [];\n console.clear();\n });\n }\n}\n","import {LTPlayerManager} from \"./components/LTPlayerManager\";\n\n\n//todo remove from window, it's for developer\nwindow.addEventListener('load', function () {\n if (window.Player === undefined) {\n window.Player = new LTPlayerManager();\n }\n})\n"],"names":["self","module","exports","e","d","t","n","r","o","Object","defineProperty","enumerable","get","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Array","isArray","length","default","x","c","isRoot","join","_","remove","v","removeUndefinedItems","j","set","y","split","s","i","l","u","replace","f","decodeURIComponent","indexOf","p","shift","a","g","test","m","pop","h","match","push","b","A","P","O","encodeURIComponent","arguments","apply","splitLast","isMergeableObject","isNonNullObject","stringValue","toString","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","arrayMerge","sourceIsArray","destination","forEach","key","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","deepmerge_1","Parser_1","BNF","RULES","name","bnf","fragment","pinned","defaultParser","Parser","debug","preDecorationRE","decorationRE","subExpressionRE","getBNFBody","parser","rule","findRuleByName","rules","decoration","exec","decorationText","lonely","RegExp","isLonelyRule","getBNFRule","getBNFChoice","emit","acumulator","grammarRules","recover","subitems","convertRegex","txt","createRule","tmpRules","token","children","type","seq","parentName","anterior","bnfSeq","total","resta","console","log","restar","text","newRule","JSON","stringify","getSubItems","getRules","ast","getAST","errors","Transform","subParser","constructor","super","debugRulesParser","emitSource","this","parseRuleName","escapeRegExp","readToken","UPPER_SNAKE_RE","WS_RULE","TokenError_1","expr","result","index","rest","substr","start","end","fullText","parent","str","fixRest","fixPositions","agregateErrors","err","tok","postDecoration","preDecoration","postDecorationText","preDecorationText","out","raw","isOptional","allowRepetition","atLeastOne","lookupPositive","lookupNegative","lookup","isLiteral","parsed","cachedRules","stripRules","re","localRules","indexOnChildren","splice","ignoreMissingRules","neededRules","parsedName","error","option","implicitWs","ruleName","parse","keepUpperRules","TokenError","recursion","printable","realType","targetLex","src","eval","ReferenceError","phases","tmp","tmpTxt","position","allOptional","foundSomething","got","localTarget","foundAtLeastOne","WS","parseRecovery","simplifyWhenOneChildren","recoverableToken","message","inspect","equal","flags","valueOf","window","document","exportName","undefined","assign","VENDOR_PREFIXES","TEST_ELEMENT","createElement","round","Math","abs","now","Date","setTimeoutContext","fn","timeout","context","setTimeout","bindFn","invokeArrayArg","arg","each","obj","iterator","deprecate","method","deprecationMessage","stack","warn","TypeError","output","nextKey","extend","dest","merge","inherit","child","base","properties","childP","baseP","create","_super","boolOrFn","args","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","addEventListener","removeEventListeners","removeEventListener","hasParent","node","parentNode","inStr","find","trim","inArray","findByKey","toArray","slice","uniqueArray","sort","results","values","prefixed","prefix","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","navigator","userAgent","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","PROPS_XY","PROPS_CLIENT_XY","Input","manager","callback","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offset","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","last","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","clientX","clientY","p1","p2","props","sqrt","atan2","PI","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","toLowerCase","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","touches","changed","changedTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","style","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","update","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","preventDefault","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","STATE_FAILED","Recognizer","defaults","id","state","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","count","Hammer","preset","Manager","handlers","oldCssProps","inputClass","toggleCssProps","item","add","recognizeWith","requireFailure","cssProps","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","clearTimeout","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stop","force","stopped","curRecognizer","existing","on","events","off","data","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","configurable","writable","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","addCSS","thumbWidth","watch","from","querySelectorAll","includes","String","NodeList","Element","Event","T","querySelector","rangeTouch","config","enabled","webKitUserSelect","listeners","parseFloat","getAttribute","getBoundingClientRect","width","left","max","toFixed","w","disabled","bubbles","MutationObserver","addedNodes","observe","body","childList","subtree","documentElement","k","C","Boolean","S","E","M","N","I","L","$","Number","isNaN","D","q","H","nodeType","R","F","KeyboardEvent","V","TextTrack","kind","U","URL","startsWith","hostname","W","z","WebkitTransition","MozTransition","OTransition","transition","K","hidden","offsetHeight","Y","isIE","documentMode","isEdge","isWebkit","isIPhone","maxTouchPoints","isIos","Q","X","J","reverse","cloneNode","nextSibling","appendChild","insertBefore","G","entries","setAttribute","Z","innerText","ee","te","removeChild","ie","childNodes","lastChild","se","replaceChild","ne","charAt","class","ae","le","classList","contains","oe","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","ce","elements","container","he","ue","focus","preventScroll","classNames","tabFocus","de","me","audio","video","check","playsinline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","isHTML5","media","canPlayType","textTracks","transitions","reducedMotion","matchMedia","pe","ge","passive","capture","eventListeners","fe","be","ye","ve","CustomEvent","detail","plyr","we","Te","Promise","ready","then","ke","B","Ce","Ae","Se","Ee","Pe","every","Me","Ne","ratio","embed","videoWidth","videoHeight","xe","isVideo","wrapper","aspectRatio","paddingBottom","isVimeo","vimeo","premium","supported","offsetWidth","parseInt","getComputedStyle","fullscreen","active","transform","videoFixedRatio","padding","Ie","Le","getSources","getQualityOptions","quality","forced","setup","speed","onChange","currentTime","paused","preload","readyState","playbackRate","once","play","load","cancelRequests","blankVideo","$e","_e","Oe","De","innerHTML","qe","html5","youtube","He","i18n","seekTime","title","Re","localStorage","getItem","setItem","storage","removeItem","Fe","XMLHttpRequest","responseText","response","status","open","responseType","send","Ve","getElementById","insertAdjacentElement","content","catch","Be","trunc","Ue","We","getIconUrl","iconUrl","location","host","top","svg4everybody","url","cors","findElements","controls","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","progress","inputs","seek","volume","display","buffer","duration","seekTooltip","tooltip","toggleNativeControls","createIcon","iconPrefix","createElementNS","focusable","setAttributeNS","createLabel","createBadge","menu","badge","createButton","je","toggle","label","icon","labelPressed","iconPressed","some","control","createRange","min","step","autocomplete","role","updateRangeFill","createProgress","played","createTime","bindMenuItemShortcuts","stopPropagation","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","list","checked","bind","currentTrack","formatTime","updateTimeDisplay","updateVolume","setRange","muted","updateProgress","getElementsByTagName","nodeValue","buffered","setProperty","updateSeekTooltip","tooltips","pageX","markers","points","insertAdjacentHTML","timeUpdate","invertTime","seeking","durationUpdate","displayDuration","setMarkers","toggleMenuButton","updateSetting","panels","getLabel","Ye","setQualityMenu","checkMenu","setCaptionsMenu","getTracks","toggled","language","unshift","setSpeedMenu","minimumSpeed","maximumSpeed","popup","toggleMenu","composedPath","getMenuSize","opacity","removeAttribute","scrollWidth","scrollHeight","height","propertyName","setDownloadUrl","download","home","href","urls","isEmbed","provider","inject","loadSprite","floor","random","seektime","controlPressed","labels","setMediaMetadata","mediaSession","metadata","MediaMetadata","mediaMetadata","artist","album","artwork","createDocumentFragment","marker","tip","ze","Ke","URLSearchParams","isYouTube","protocol","createObjectURL","languages","userLanguage","meta","currentTrackNode","mode","updateCues","setLanguage","findTrack","enableTextTrack","has","getCurrentTrack","activeCues","getCueAsHTML","caption","Qe","autoplay","autopause","toggleInvert","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","focused","global","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","advertisement","qualityBadge","sdk","iframe","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","loading","hover","cues","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","attributes","hash","publisherId","tagUrl","byline","portrait","transparent","customControls","referrerPolicy","rel","showinfo","iv_load_policy","modestbranding","noCookie","Xe","Ge","et","tt","it","Function","st","player","scrollPosition","scrollX","scrollY","scrollTo","overflow","head","cleanupViewport","activeElement","shiftKey","forceFallback","native","requestFullscreen","webkitEnterFullscreen","toggleFallback","navigationUI","webkitExitFullscreen","cancelFullScreen","exit","enter","closest","parentElement","proxy","trapFocus","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","usingNative","getRootNode","fullscreenElement","shadowRoot","nt","Image","onload","onerror","naturalWidth","at","addStyleHook","build","checkPlaying","setTitle","setPoster","togglePoster","reject","backgroundImage","backgroundSize","toggleControls","checkLoading","timers","lastSeekTime","migrateStyles","getPropertyValue","removeProperty","lt","focusTimer","lastKeyDown","handleKey","firstTouch","setTabFocus","maxWidth","margin","clientWidth","innerWidth","clientHeight","innerHeight","resized","isAudio","ended","togglePlay","forward","toggleCaptions","currentTarget","hasAttribute","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","sign","increaseVolume","lastKey","altKey","ctrlKey","metaKey","decreaseVolume","globalThis","ot","success","async","numRetries","before","relList","as","onbeforeload","sheet","cssText","code","defaultPrevented","returnPromise","done","isDefined","rt","ct","hasPlayed","ht","Vimeo","sidedock","$2","thumbnail_url","Player","disableTextTrack","resolve","setVolume","setCurrentTime","setPlaybackRate","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","firstChild","getPaused","seconds","percent","ut","dt","mt","YT","onYouTubeIframeAPIReady","getTitle","videoId","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","onError","onPlaybackRateChange","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","seekTo","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","pt","gt","google","ima","trigger","displayContainer","startSafetyTimer","managerPromise","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","loader","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","requestAds","AdsRequest","adTagUrl","linearAdSlotWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","countdownTimer","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","cuePoints","getCuePoints","AdEvent","onAdEvent","getAd","getAdData","LOADED","pollCountdown","isLinear","STARTED","ALL_ADS_COMPLETED","loadAds","contentComplete","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","LOG","adError","getMessage","cancel","addCuePoints","discardAdBreak","resize","ViewMode","NORMAL","initialize","initialized","zIndex","safetyTimer","AV_PUBLISHERID","AV_CHANNELID","AV_URL","cb","AV_WIDTH","AV_HEIGHT","AV_CDIM2","ft","bt","startTime","endTime","yt","vt","getThumbnails","render","determineContainerAutoSizing","thumbnails","getThumbnail","frames","urlPrefix","substring","lastIndexOf","naturalHeight","mousePosX","thumb","showImageAtCurrentTime","toggleThumbContainer","mouseDown","toggleScrubbingContainer","ceil","lastTime","scrubbing","setScrubbingContainerSize","setThumbContainerSizeAndPos","findIndex","loadedImages","showingThumb","loadImage","currentImageElement","dataset","filename","showImage","removeOldImages","loadingImage","usingSprites","showingThumbFilename","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","tagName","deleting","thumbContainerHeight","sizeSpecifiedInCSS","thumbAspectRatio","setThumbContainerPos","right","lastMouseMoveTime","currentScrubbingImageElement","currentThumbnailImageElement","wt","insertElements","change","sources","crossorigin","tracks","Tt","webkitShowPlaybackTargetPicker","original","unload","failed","jQuery","WeakMap","className","search","searchParams","tabindex","hasAudio","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","currentSrc","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","setPreviewThumbnails","static","kt","is_uri","is_iri","is_http_uri","is_http_iri","is_https_uri","is_https_iri","is_web_uri","is_web_iri","isUri","isHttpUri","isHttpsUri","isWebUri","splitUri","uri","splitted","authority","path","query","scheme","allowHttps","port","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","leafPrototypes","getProto","moduleId","cachedModule","__webpack_modules__","getter","__esModule","getPrototypeOf","ns","def","current","getOwnPropertyNames","definition","nmd","paths","LTPlayerChapters","chapters","setupInitChapter","lastChapter","firstChapter","instance","eventPlayer","playerControl","chaptersService","findChapter","setChapterPreviousNext","setTitleChapterName","setButtonsChapterTime","playerControlsContainer","leftButton","rightButton","ltPlayerChaptertimestamp","timestamp","playerContainer","customPoster","mobileEvent","eventInstance","mobileEvents","setMobileEvent","nextChapter","previousChapter","previous","chapter","findPrevious","elementIndex","findCurrent","LTPlayerCommonSettingsControllers","string","settingsTemplate","templateService","getSettings","playerConfig","getPlayerId","lastElement","getSelectors","settingsContainer","background","saveButton","settingsBody","LTPlayerMobileSettingsControllers","settingsInstance","common","addSettingsTemplate","playerInstance","getDevice","setDefaultSpeed","setButtonSpeed","playerSpeedButton","playSpeed","LTPlayerDesktopSettingsControllers","addOpenSettingsEventButton","initCaptionsEvent","initSpeedVideoEvent","initSaveButton","openSettings","checkBox","myRange","myValue","oninput","closeSettings","LTPlayerSettingsControlsManager","playerType","playerID","mobile","desktop","Common","forwardArea","rewindArea","forwardAnimation","rewindAnimation","updateCurrentTime","playPause","playInfoIcon","pauseInfoIcon","playerStateInfo","removeStateButtons","animateNotificationIn","selector","animateNotificationOut","playIcon","pauseIcon","Desktop","playerControls","fullScreenButtonContainer","playPauseIconTimeUpdate","backwardRewind","volumeControlArea","backward","openVolumeButton","closeVolumeButton","volumeControl","volumeBackground","volumeRangeControl","eventTarget","playerVolumeBefore","volumeIcons","range","volumeMax","volume75","volume50","volumeMute","volumeBody","volumeIconsManger","rangeValue","Mobile","seekBar","require","__this","showControls","controlsTimeOut","playButton","singleTapAction","volumeButton","volumeUp","setVolumeIcon","volumeState","LTPlayerControlsEvents","LTPlayerControls","settingsControlsManager","setDesktopEvents","setMobileEvents","desktopEvents","iconService","getTemplateControls","objectToString","isFunction","hasProperty","propName","regExpTest","nonSpaceRe","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","pos","Context","view","parentContext","cache","Writer","templateCache","_cache","clear","eos","scan","scanUntil","primitive","intermediateValue","names","lookupHit","clearCache","template","tags","cacheKey","mustache","isCacheEnabled","tokens","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","compileTags","tagsToCompile","chr","openSection","scanner","valueLength","testRegExp","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","partials","getConfigTags","renderTokens","originalTemplate","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","escape","getConfigEscape","version","defaultWriter","TemplateService","Mustache","additionalInfo","configData","getConfigData","getVideoType","icons","getIconsByComponent","isShare","isShareData","device","getPlayerType","landscape","controlsTemplate","miniPlayerControls","IconsService","posterMapIconsName","mapElement","controlsMapIconsName","additionalInfoIconsName","LTPLayerAddInfoResizeManager","LTPlayerRotateDeviceService","screen","orientation","ResizeService","size","getPlayerElementContainer","playerParentContainer","addInfo","setPlayerDimensions","setPortrate","setLandScape","setEvent","defaultPortrate","defaultLandscape","defaultData","ResizeObserver","setDimensions","buttonsTemplate","deskEvent","controller","setAddInfoByDimensions","containerWidth","addInfoContainer","addInfoInSide","addInfoOutSide","createAddInfoButtonsInSide","containerHeight","getDeviceOrientation","playerParam","setWidth","setHeight","itemClass","dimension","setClass","LTPlayerPosterPreload","imagePosterContainer","isAutoPreload","LTPlayerPoster","logo","getLogo","posterTemplate","getPoster","logoBig","getShareData","posterImageBody","imageTag","getPosterImage","append","LoaderService","spinner","LTPlayerPosterPreloadEvents","removePosterImage","playerOnloadPosterSelector","embedPlay","getSpinner","preloadData","getPreload","playAutoPreload","setMuted","removeSpinner","html5Play","checkPlayer","disablePoster","miniPlayer","disableSettings","Preload","preloadPoster","preloadEvents","LTPlayerDevMethode","getButtons","playButtons","isActive","LTPlayerPosterEvents","playerElementContainer","playerPoster","LTPlayerPosterManager","setTemplate","setImage","removeDefaultImage","initPreload","devMethodePreload","shareContainer","isPlaying","getSelector","activeModal","inactiveModal","LTPlayerShareEvents","LTPlayerShare","appendScriptTag","getShare","script","LTPlayerController","windowService","posterManager","share","LTPlayerMini","removeMiniPLOnFullScreen","fullScreenButton","_this","playerWrapper","setBackground","addMouseHoverControllers","addPlayPauseEvents","setSeekBar","exitMiniPlayer","setValue","getBackGroundTemplate","getControlsMiniPlayer","mini_player","miniPLayerSelector","miniPLayerControls","Helper","videoUrl","groupMatch","origin","LTPlayerConfig","autoPlay","videoTitle","posterImage","videoParagraph","videoType","embedId","embedHash","playerId","defaultConfig","dimensions","max_width","min_width","max_height","min_height","setConfig","processConfigData","configItem","setCustomConfig","defaultDimensions","isInteger","setDefaultTimeRange","setPreloadType","autoType","setActive","setTimeRange","urlVideoData","getEmbeddedID","getEmbeddedHash","getVideoOrigin","getConfigByOrigin","LTPlayerCommon","additionalInfoService","setCurrentPlayerPlay","eventListener","plyrInstance","deleteTouchEvents","isAutoPlay","endVideo","updateCurrentTimeAndTitle","subtitles","LTPlayerDesktop","eventManager","playerPlay","removeDesktopPlyrEvents","plyrOnReady","plyrEmbedOnReady","plyrEndVideo","plyrFullScreen","plyrTimeUpdate","plyrOnPlay","plyrOnPause","setPlayerId","setDefaultSettingsConfig","onReadyPlayer","modal","showHide","fullScreenButtons","playPauseIcon","backwardForward","backwardForwardSeconds","setButtonsEvents","windowDesktopEvents","closeSettingsEvent","fullscreenIcon","LTPlayerMobile","removeMobilePlyrEvents","controlsTimeShow","setMobileButtonEvents","removePlyrControlsClass","LTPlayerEventsManager","plyrEvent","players","currentPlayPlayer","miniPlayersBackground","miniPlayerEnable","playerPosterImage","disableControls","LTPlayerEvents","PortraitType","setPlayerConfig","initSetupPlayerPoster","initPlayer","setEvents","getOnloadPoster","getTemplateByType","getControls","innerPlayerTemplate","playerSettings","getPlayerControllers","getEmbedOrigin","getDefaultConfigItems","ratios","getFullscreenMode","Plyr","getChapters","initChapters","devMethodePlayer","LandscapeType","initPoster","LTPlayer","AdditionalItemsError","AdditionalPropertiesError","AllOfError","AnyOfError","ConstError","containsAnyError","ContainsArrayError","ContainsError","EnumError","FormatDateError","FormatDateTimeError","FormatEmailError","FormatHostnameError","FormatIPV4Error","FormatIPV4LeadingZeroError","FormatIPV6Error","FormatIPV6LeadingZeroError","FormatJSONPointerError","FormatRegExError","FormatTimeError","FormatURIError","FormatURIReferenceError","FormatURITemplateError","FormatURLError","InvalidDataError","InvalidPropertyNameError","MaximumError","MaxItemsError","MaxLengthError","MaxPropertiesError","MinimumError","MinItemsError","MinItemsOneError","MinLengthError","MinLengthOneError","MinPropertiesError","MissingDependencyError","MissingOneOfPropertyError","MultipleOfError","MultipleOneOfError","NoAdditionalPropertiesError","NotError","OneOfError","OneOfPropertyError","PatternError","PatternPropertiesError","RequiredPropertyError","UndefinedValueError","UniqueItemsError","UnknownPropertyError","ValueNotEmptyError","__","keyword","strings","createError","createCustomError","getTypeOf","errorOrPromise","isPromise","flattenArray","DECLARATOR_ONEOF","GET_TEMPLATE_RECURSION_LIMIT","floatingPointPrecision","propertyBlacklist","overwriteMerge","destinationArray","sourceArray","mergeUniqueItems","resolveSchema","draft","schemaToResolve","_a","schema","resolveRef","if","else","fuzzyObjectValue","core","one","pointer","rootSchema","oneOfProperty","oneOfValue","missingOneOfPropertyError","oneOf","oneOfPropertySchema","validate","oneOfPropertyError","schemaOfItem","fuzzyGreatest","fuzzyValue","oneOfError","multipleOneOfError","emptyObject","_get","frags","rContainer","isContainer","nodeAsRegex","mem","entry","expand","any","childEntry","regex","escaped","typecheck","checkedTyped","lookahead","valid","or","expression","cmp","valueString","expressionMatches","runPatternOnce","inputSet","resultingSet","workingSet","runNode","func","collect","quantifier","iterationCount","Infinity","getIterationCount","pattern","skip","returnTypes","ReturnType","queryString","returnType","VALUE","run","POINTER","ALL","MAP","buildPath","cp","getType","isProperty","ignoreTypes","arrayHasIndex","isEscaped","isArrayProp","convertToIndex","removeEscape","addToArray","INSERT_ITEMS","arrayIndex","insert","REPLACE_ITEMS","InsertMode","arrayWithoutIndex","nextSet","insertArray","keyIsArray","targetValue","unescapedProp","$ref","allOf","definitions","anyOf","validationKeywords","keywords","boolean","enum","integer","not","number","null","typeKeywords","getTypeId","isObject","ids","nextTypeDefs","defs","getTypeDefs","eachDefinition","walk","defId","eachSchema","defschema","schemaPointer","$defs","suffixes","trailingHash","isDomain","trailingFragments","idAndPointer","joinScope","emptyValues","getRef","__ref","$remote","remotes","fragments","splitRef","COMPILED","additionalItemsError","additionalPropertiesError","anyOfError","allOfError","constError","containsError","containsArrayError","enumError","formatURLError","formatURIError","formatURIReferenceError","formatURITemplateError","formatDateError","formatDateTimeError","formatEmailError","formatHostnameError","formatIPV4Error","formatIPV4LeadingZeroError","formatIPV6Error","formatIPV6LeadingZeroError","formatJSONPointerError","formatRegExError","formatTimeError","invalidSchemaError","invalidDataError","invalidTypeError","invalidPropertyNameError","maximumError","maxItemsError","maxLengthError","maxPropertiesError","minimumError","minItemsError","minItemsOneError","minLengthError","minLengthOneError","minPropertiesError","missingDependencyError","multipleOfError","noAdditionalPropertiesError","notError","patternError","patternPropertiesError","requiredPropertyError","typeError","undefinedValueError","uniqueItemsError","unknownPropertyError","valueNotEmptyError","isValidDateTime","isValidIPV4","isValidIPV6","isValidHostname","matchDate","matchTime","DAYS","isValidJSONPointer","isValidRelativeJSONPointer","isValidURIRef","isValidURITemplate","formatValidators","date","year","month","day","email","endsWith","part","ipv4","ipv6","hour","minute","second","timeZone","defaultOptions","addOptionalProps","removeInvalidData","shouldResolveRef","createTemplateSchema","templateSchema","resolvedAnyOf","isJSONSchema","getTemplate","_schema","opts","const","isEmpty","resolvedSchema","defaultValue","defaultType","dataType","selectType","convertValue","TYPE","getDefault","required","isRequired","dependencies","dependency","additionalData","_b","_c","minItems","items","oneOfSchema","itemCount","templateValue","initValue","deepCompareStrict","typeofa","aKeys","bKeys","ucs2decode","counter","charCodeAt","extra","FPP","KeywordValidation","additionalProperties","patternProperties","receivedProperties","expectedProperties","patterns","resolveOneOf","subSchema","dependencyErrors","missingProperty","valueStr","format","validateFormat","itemData","itemSchema","itemErrors","maximum","exclusiveMaximum","maxItems","maxLength","lengthOfString","maxProperties","propertyCount","minLength","minimum","exclusiveMinimum","minProperties","multipleOf","description","patternExample","received","pp","patternSchema","patternFound","valErrors","keyErrors","propertiesRequired","requiredNotEmpty","uniqueItems","itemPointer","duplicatePointer","ifErrors","propertyNames","propertySchema","validationResult","validationError","createSchemaOf","stepType","itemsType","resolveAnyOf","resolveAllOf","additionalItems","targetSchema","oneOfIndex","variableSchema","dependentProperties","dependentProperty","resolvedThen","resolvedElse","expected","expectedType","stepFunction","draft07Config","validateKeyword","validateType","addRemoteSchema","compileSchema","schemaToCompile","rootSchemaAsString","compiledSchema","scopes","getRoot","$id","parentPointer","parentSchema","previousPointer","scope","nextSchema","getChildSchemaSelection","getSchema","mi","mergedSchema","found","anyOfSchema","receivedType","jsType","getJsonSchemaType","setSchema","__rootSchema","ValidatorService","Draft","additionalInfoBodyOut","additionalInfoBodyIn","getInfoButtons","infoButtonsOut","infoButtonsIn","targetModal","ltTarget","info","modalTemplate","getAdditionalInfo","createInformationModal","modals","el","additionalInfoBody","mobileModal","backgroundModal","bottom","dragCloseModal","modalHeader","closeModal","modalBody","LTPlayerAdditionalInfo","LTPlayerAddInfoManager","Controller","setDataContent","ltPlayerAdditionalInfoTarget","setPlayerType","addInfoType","LTPLayerAddInfo","Portrate","setAddInfo","Landscape","activePlayer","playerVideoContent","templateData","getAdditionalInfoButtons","exist","setEventAddInfo","LTPlayerSetup","setDebugEvent","Example_1","Example_2","playerSchema","playerContainerPlayer","setAdditionalInfo","setType","getVideoTypeByUrl","videoTag","videoData","resolveOuter","fetch","json","embedRequest","respose","res","additionalInfoContainer","LTPlayerManager","initPageDomElements","domElements","initBySelector","defaultSelector","ltPlayerConfig","table","getPlayerByID","playerManager","getPlayerByElement","destructInstance","destruct","iterateInstances","initDestruct"],"sourceRoot":""}
|