{"version":3,"mappings":";;;;;;CAAqB;AACjB,QAAM;AACN,MAAI;AACA;AAAA,EACH;AACD,aAAW,QAAQ;AACf;AAAmB,EACtB;AACD,MAAI,iBAAiB;AACjB,eAAW;AACP;AACI;AAAA,MACH;AACD,iBAAW;AACP,YAAI;AACA,yBAAe,IAAI;AAAA,MAC1B;AAAA,IACJ;AAAA,EACT,CAAK,EAAE,QAAQ,UAAU,EAAE;AACvB;AACI;AACA,QAAI;AACA,gBAAU;AACd,QAAI,OAAO;AACP,gBAAU;AACd,QAAI,OAAO;AACP;AAAwB,aACnB,OAAO;AACZ,gBAAU;AAAc;AAExB;AACJ,WAAO;AAAA,EACV;AACD;AACI;AAEI;AACJ,SAAK,KAAK;AAEV,UAAM;AACN;AAA0B,EAC7B;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCA;AAA+C,EAA/C;AAAA;AAGEA;AAKAC;AAA4B;AAAA,EAJ5B;AACE,WAAO,CAAC,UAAU;AAAA,EACpB;AAAA,EAIAC,oBAAoB;AAClB,SAAKC,MAAMC,UAAU;AACfC,cAAI,KAAKC;AACf,SAAKH,MAAMI,QAAQF;AACnB,SAAKF,MAAMK;AACNL;AACAA;AAGCM,uBAAaC;AACnB,SAAKC,WAAWC,MAAMC;AAEhBC,gBAAM,KAAKR;AACXS,iBAAO,KAAKT;AACZU,qBAAW,KAAKC;AACtB,QAAIH,KAAK;AACDA;AD5BZ;AC6BQ,aAAKb;AACL,YAAIA;AACJ,YAAG,CAACA;AAAU;AACVA,qBAASiB;AACX,gBAAMC,cAAsBlB;AAC5B;AACA;AAGI,eAACmB;AACCN;AACOO;AAAoE,mBACxE;AACDC;AACKD,8BAAO,GAAGE,OAAOC,iBAAiBF,UAAUG,SAASH,UAAUI,WAAW,MAAMP;AAAAA;AAC3F;AAEE,eAACC;AACCN,oBAAIa,SAAS,MAAM,GAAG;AACxB1B,uBAAS2B;AAA0C,mBAC9C;AACDN;AACJrB;AAAwE2B,YAC1E;AAAA;AACF;AAEF,cAAMC;AACC;AAAe;AAAEC;AACZ;AAAA;AAAEd,YAAUe;AAAaF,WAAO;AAAA,SAC3C;AAAA;AACF;AAEH,QAAId,MAAM;AACPiB,aAAe/B;AAChB,YAAM4B,QAAa;AACZ;AAAe,QAAEC;AAAAA;AACZ;AAAA,UAAEd;AAAAA,UAAUe;AAAaF,SAAO;AAAA,OAC3C;AAAA;AACH,EACF;AAAA,EAEAI,OAAO;ADtET;ACuEI,eAAKjC;AAAKkC,EACZ;AAAA,EAEAC,QAAQ;AD1EV;AC2EI;AAAUC,EACZ;AAAA,EAEAA,OAAO;AD9ET;AC+EI;AAAUA,EACZ;AAAA,EAEAC,OAAa;AAAA,EAEb;AAAA,EAEA;ADtFF;ACuFW,cAAC,UAAKrC,QAAL;AAAUsC,EACpB;AAAA,EAEA,IAAIC,WAAmB;AD1FzB;AC2FW;AAAsB,EAC/B;AACF;AAEA,MAAMnB,WAAW,CAACoB,QAAgB;AAC5B;AACF;AAA0BA;AAEnB;AAAA,EACT;AACF;AAEA,MAAMC,SAAS,CAAC3B,QAA+B;AACtC,aAAI4B;AACL;AACIC;AACNA,aAAO7B,MAAMA;AACJ8B,oBAAKC;AACdF,aAAOG,SAAS;AACNC,oBAAI;AACH;MAAA;AAAA,aAEJC;AACPC;AACS;IACX;AAAA,GACD;AACH;AAEA,MAAMC,SAAS,CAACV,QAAgB;AAC9B,SAAO,IAAIW,IAAIX;AACjB;AACAC;AACSW;AACAF,gBAAQ;AACEG,0BAAO;AAAkC,GACzD;AACH,CAAC","names":["api","imRecord","connectedCallback","style","display","w","getAttribute","width","height","dvsPlayers","document","tabIndex","Array","from","src","data","controls","hasAttribute","version","defaultPage","isBase64","buffer","sourceUrl","canvas","pageBackground","origin","pathname","includes","audio","_this","renderApp","dvsPlayerEl","window","play","start","pause","stop","load","isPlaying","duration","str","loadJS","Promise","script","body","appendChild","onload","log","err","console","getUrl","URL","fabric","define"],"sources":["../vite/modulepreload-polyfill","../src/main.ts"],"sourcesContent":["__VITE_IS_MODERN__&&(function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n}());","import { ImRecord } from \"./types\";\r\n\r\nclass HTMLDvsPlayerElement extends HTMLElement {\r\n\r\n // @ts-ignore\r\n api: typeof window[\"DvsPlayerApi\"] = {};\r\n static get observedAttributes() {\r\n return [\"controls\"];\r\n }\r\n\r\n imRecord: ImRecord | null = null;\r\n\r\n connectedCallback() {\r\n this.style.display = \"block\";\r\n const w = this.getAttribute(\"width\"), h = this.getAttribute(\"height\");\r\n this.style.width = w ? w + \"px\" : \"100%\";\r\n this.style.height = h ? h + \"px\" : \"100%\";\r\n this.style.minWidth = 375 + \"px\"\r\n this.style.minHeight = 200 + \"px\"\r\n \r\n // find all elements and calculate tabIndex\r\n const dvsPlayers = document.querySelectorAll(\"dvs-player\");\r\n this.tabIndex = Array.from(dvsPlayers).indexOf(this);\r\n\r\n const src = this.getAttribute(\"src\");\r\n const data = this.getAttribute(\"data\");\r\n const controls = this.hasAttribute('controls') ? this.getAttribute('controls') !== 'false' : true;\r\n if (src) {\r\n fetch(src).then(res => res.json()).then(json => {\r\n this.imRecord = json\r\n var imRecord = this.imRecord;\r\n if(!imRecord) return;\r\n if (imRecord.version == \"2\") {\r\n const defaultPage: string = imRecord.buffer[0].canvas.pageBackground || \"\";\r\n const imageExt = defaultPage?.split(\".\").pop() || \"png\";\r\n const audioExt = imRecord.audio?.split(\".\")?.pop() || \"webm\";\r\n\r\n // .dvs olarak gelmiyorsa, dosya stream edilerek geliyor demektir. NodeServer da video/play/dvs/1/2/3 gibi url den geliyor. \r\n if (!isBase64(defaultPage) && !defaultPage.startsWith(\"http\")) {\r\n if (src.includes(\".dvs\")) {\r\n imRecord.buffer[0].canvas.pageBackground = src.replace(\".dvs\", `.${imageExt}`);\r\n } else {\r\n var sourceUrl = new URL(src);\r\n imRecord.buffer[0].canvas.pageBackground = sourceUrl.origin + sourceUrl.pathname + \"/\" + defaultPage;\r\n }\r\n }\r\n if (!isBase64(imRecord.audio) && !imRecord.audio?.startsWith(\"http\")) {\r\n if (src.includes(\".dvs\")) {\r\n imRecord.audio = src.replace(\".dvs\", `.${audioExt}`);\r\n } else {\r\n var sourceUrl = new URL(src);\r\n imRecord.audio = sourceUrl.origin + sourceUrl.pathname + \"/\" + imRecord.audio;\r\n }\r\n }\r\n }\r\n const _this: any = this;\r\n import(\"./App\").then(({ renderApp }) => {\r\n renderApp({ controls, dvsPlayerEl: _this })\r\n })\r\n })\r\n }\r\n if (data) {\r\n (window as any).imRecord = JSON.parse(data)\r\n const _this: any = this;\r\n import(\"./App\").then(({ renderApp }) => {\r\n renderApp({ controls, dvsPlayerEl: _this })\r\n })\r\n }\r\n }\r\n\r\n play() {\r\n this.api?.start();\r\n }\r\n\r\n pause() {\r\n this.api?.stop();\r\n }\r\n\r\n stop() {\r\n this.api?.stop();\r\n }\r\n\r\n load(): void {\r\n // reload custom component\r\n }\r\n\r\n get paused(): boolean {\r\n return !this.api?.isPlaying;\r\n }\r\n\r\n get duration(): number {\r\n return this.api?.duration ?? 0;\r\n }\r\n}\r\n\r\nconst isBase64 = (str: string) => {\r\n try {\r\n return btoa(atob(str)) == str;\r\n } catch (err) {\r\n return false;\r\n }\r\n}\r\n\r\nconst loadJS = (src: string): Promise => {\r\n return new Promise((resolve) => {\r\n try {\r\n const script = document.createElement(\"script\");\r\n script.src = src;\r\n document.body.appendChild(script);\r\n script.onload = () => {\r\n console.log(\"Script loaded\", src)\r\n resolve();\r\n }\r\n } catch (err) {\r\n console.error(err)\r\n resolve();\r\n }\r\n })\r\n}\r\n\r\nconst getUrl = (str: string) => {\r\n return new URL(str, import.meta.url).href\r\n}\r\nloadJS(getUrl(`fabric.js?v=${Math.random() * 10000}`)).then(() => {\r\n window.fabric.fabric = window.fabric\r\n loadJS(getUrl(`player.js?v=${Math.random() * 10000}`)).then(() => {\r\n customElements.define(\"dvs-player\", HTMLDvsPlayerElement);\r\n })\r\n})\r\n\r\nexport { }"],"file":"dvs-player.js"}