From f3e83284f3e59470e2f270dc26f88cefcdcd4757 Mon Sep 17 00:00:00 2001 From: Eduard Klimenko Date: Fri, 13 Dec 2024 14:54:49 +0200 Subject: [PATCH] DIST removed, added to .gitignore --- .gitignore | 2 + dist/webshark/166.36c3753ab435fb92.js | 270 - dist/webshark/166.36c3753ab435fb92.js.map | 1 - dist/webshark/main.181a1ef948f495ba.js | 200407 --------------- dist/webshark/main.181a1ef948f495ba.js.map | 1 - dist/webshark/polyfills.82d7732fb874eb65.js | 31661 --- .../polyfills.82d7732fb874eb65.js.map | 1 - dist/webshark/runtime.302787cac555f9b7.js | 199 - dist/webshark/runtime.302787cac555f9b7.js.map | 1 - dist/webshark/scripts.1ff4ee0f1a7352e7.js | 16888 -- dist/webshark/scripts.1ff4ee0f1a7352e7.js.map | 1 - dist/webshark/styles.df1d881dfede861d.css | 53 - dist/webshark/styles.df1d881dfede861d.css.map | 1 - 13 files changed, 2 insertions(+), 249484 deletions(-) delete mode 100644 dist/webshark/166.36c3753ab435fb92.js delete mode 100644 dist/webshark/166.36c3753ab435fb92.js.map delete mode 100644 dist/webshark/main.181a1ef948f495ba.js delete mode 100644 dist/webshark/main.181a1ef948f495ba.js.map delete mode 100644 dist/webshark/polyfills.82d7732fb874eb65.js delete mode 100644 dist/webshark/polyfills.82d7732fb874eb65.js.map delete mode 100644 dist/webshark/runtime.302787cac555f9b7.js delete mode 100644 dist/webshark/runtime.302787cac555f9b7.js.map delete mode 100644 dist/webshark/scripts.1ff4ee0f1a7352e7.js delete mode 100644 dist/webshark/scripts.1ff4ee0f1a7352e7.js.map delete mode 100644 dist/webshark/styles.df1d881dfede861d.css delete mode 100644 dist/webshark/styles.df1d881dfede861d.css.map diff --git a/.gitignore b/.gitignore index 2de1e66..2396743 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,8 @@ yarn-error.log /libpeerconnection.log testem.log /typings +/dist +/dist/* # System files .DS_Store diff --git a/dist/webshark/166.36c3753ab435fb92.js b/dist/webshark/166.36c3753ab435fb92.js deleted file mode 100644 index da95117..0000000 --- a/dist/webshark/166.36c3753ab435fb92.js +++ /dev/null @@ -1,270 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 1778: -/*!*****************************************************************!*\ - !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! - \*****************************************************************/ -/***/ ((module) => { - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } -} -function _asyncToGenerator(fn) { - return function () { - var self = this, - args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - _next(undefined); - }); - }; -} -module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { -"use strict"; -/*!************************************!*\ - !*** ./src/app/wiregasm.worker.ts ***! - \************************************/ - - -/// -// addEventListener('message', ({ data }) => { -// const response = `worker response to ${data}`; -// postMessage(response); -// }); -// load the Wiregasm library and pako -// -// pako is only used to inflate the compressed wasm and data files -// if you are not compressing the wasm and data files, you do not need to include pako -// -// import * from '../wiregasm-lib' -// import wiregasm from "../wiregasm-lib/wiregasm.js"; -// import pako from "../wiregasm-lib/pako.js"; -var _asyncToGenerator = (__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ 1778)["default"]); -importScripts("../wiregasm-lib/wiregasm.js", "../wiregasm-lib/pako.js"); -let lib = null; -let uploadDir = null; -let currentSession = null; -const inflateRemoteBuffer = /*#__PURE__*/function () { - var _ref = _asyncToGenerator(function* (url) { - const res = yield fetch(url); - const buf = yield res.arrayBuffer(); - return pako.inflate(buf); - }); - return function inflateRemoteBuffer(_x) { - return _ref.apply(this, arguments); - }; -}(); -const fetchPackages = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(function* () { - console.log("Fetching packages"); - let [wasm, data] = yield Promise.all([yield inflateRemoteBuffer("../wiregasm-lib/wiregasm.wasm.gz"), yield inflateRemoteBuffer("../wiregasm-lib/wiregasm.data.gz")]); - return { - wasm, - data - }; - }); - return function fetchPackages() { - return _ref2.apply(this, arguments); - }; -}(); -fetchPackages().then(({ - wasm, - data -}) => { - loadWiregasm({ - wasmBinary: wasm.buffer, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getPreloadedPackage(name, size) { - return data.buffer; - }, - handleStatus: (type, status) => postMessage({ - type: "status", - code: type, - status: status - }), - handleError: error => postMessage({ - type: "error", - error: error - }) - }).then(l => { - lib = l; - if (!lib.init()) { - throw new Error("Failed to initialize Wiregasm"); - } - uploadDir = lib.getUploadDirectory(); - postMessage({ - type: "init" - }); - }).catch(e => { - postMessage({ - type: "error", - error: e - }); - }); -}).catch(e => { - postMessage({ - type: "error", - error: e - }); -}); -function treeToObject(vec) { - let outData = []; - if (!!vec?.$$) { - for (let row = 0; row < vec.size(); row++) { - const el = vec.get(row); - if (typeof el === 'object') { - Object.keys(el).forEach(key => { - if (!!el[key]?.$$) { - el[key] = treeToObject(el[key]); - } - }); - } - outData[row] = el; - } - } else { - if (typeof vec === 'object') { - outData = vec; - Object.keys(vec).forEach(key => { - if (!!vec[key]?.$$) { - outData[key] = treeToObject(vec[key]); - } - }); - } - } - return outData; -} -// Event listener to receive messages from the main script -onmessage = function (event) { - if (!lib) { - return; - } - const data = event.data; - console.log('worker', { - lib, - data - }); - if (data.type === "process") { - const f = data.file; - const reader = new FileReader(); - reader.addEventListener("load", event => { - console.log("Processing", f.name); - // write the file to the emscripten filesystem - const buffer = new Uint8Array(event.target.result); - const path = `${uploadDir}/${f.name}`; - lib.FS.writeFile(path, buffer); - // delete the current session if it exists - if (currentSession !== null) { - currentSession.delete(); - currentSession = null; - } - // create a new session - currentSession = new lib.DissectSession(path); - const res = currentSession.load(); - const framesData = currentSession.getFrames('', 0, 0); - const cols = lib.getColumns(); - const colsArray = Array.from({ - length: cols.size() - }, (x, k) => cols.get(k)); - console.log({ - cols - }); - const frames = framesData.frames; - console.log(frames); - const frame1 = currentSession.getFrame(1); - console.log(frame1); - console.log('data_sources as object', treeToObject(frame1)); - // console.log('tree as object', treeToObject(frame1.tree)) - const table = []; - for (let row = 0; row < frames.size(); row++) { - const element = frames.get(row); - table[row] = element; - table[row].colData = []; - for (let col = 0; col < element.columns.size(); col++) { - table[row].colData.push(element.columns.get(col)); - } - delete table[row].columns; - } - console.log({ - table - }); - postMessage({ - type: "processed", - name: f.name, - data: { - res, - frame1, - colsArray, - table - } - }); - }); - reader.readAsArrayBuffer(f); - } - if (data.type === "getFrame") { - const frame1 = currentSession.getFrame(data.frameId); - console.log(frame1); - console.log('data_sources as object', treeToObject(frame1)); - postMessage({ - type: "getFrame", - data: { - frame1 - } - }); - } -}; -})(); - -/******/ })() -; -//# sourceMappingURL=166.36c3753ab435fb92.js.map \ No newline at end of file diff --git a/dist/webshark/166.36c3753ab435fb92.js.map b/dist/webshark/166.36c3753ab435fb92.js.map deleted file mode 100644 index 6738cc9..0000000 --- a/dist/webshark/166.36c3753ab435fb92.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"166.36c3753ab435fb92.js","mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oCAAoC,yBAAyB,SAAS,yBAAyB;;;;;;UC9B/F;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;;;;;;;;ACtBA;AAEA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,IAAAA,iBAAA,GAAAC,uGAAA;AAEAE,aAAa,CACX,6BAA6B,EAC7B,yBAAyB,CAC1B;AAMD,IAAIC,GAAG,GAAQ,IAAI;AACnB,IAAIC,SAAS,GAAQ,IAAI;AACzB,IAAIC,cAAc,GAAQ,IAAI;AAE9B,MAAMC,mBAAmB;EAAA,IAAAC,IAAA,GAAAR,iBAAA,CAAG,WAAOS,GAAW,EAAI;IAChD,MAAMC,GAAG,SAASC,KAAK,CAACF,GAAG,CAAC;IAC5B,MAAMG,GAAG,SAASF,GAAG,CAACG,WAAW,EAAE;IACnC,OAAOC,IAAI,CAACC,OAAO,CAACH,GAAG,CAAC;EAC1B,CAAC;EAAA,gBAJKL,mBAAmBA,CAAAS,EAAA;IAAA,OAAAR,IAAA,CAAAS,KAAA,OAAAC,SAAA;EAAA;AAAA,GAIxB;AAED,MAAMC,aAAa;EAAA,IAAAC,KAAA,GAAApB,iBAAA,CAAG,aAAW;IAC/BqB,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;IAChC,IAAI,CAACC,IAAI,EAAEC,IAAI,CAAC,SAASC,OAAO,CAACC,GAAG,CAAC,OAC7BnB,mBAAmB,CACvB,kCAAkC,CACnC,QACKA,mBAAmB,CACvB,kCAAkC,CACnC,CACF,CAAC;IAEF,OAAO;MAAEgB,IAAI;MAAEC;IAAI,CAAE;EACvB,CAAC;EAAA,gBAZKL,aAAaA,CAAA;IAAA,OAAAC,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GAYlB;AAEDC,aAAa,EAAE,CACZQ,IAAI,CAAC,CAAC;EAAEJ,IAAI;EAAEC;AAAI,CAAE,KAAI;EACvBI,YAAY,CAAC;IACXC,UAAU,EAAEN,IAAI,CAACO,MAAM;IACvB;IACAC,mBAAmBA,CAACC,IAAY,EAAEC,IAAS;MACzC,OAAOT,IAAI,CAACM,MAAM;IACpB,CAAC;IACDI,YAAY,EAAEA,CAACC,IAAS,EAAEC,MAAW,KACnCC,WAAW,CAAC;MAAEF,IAAI,EAAE,QAAQ;MAAEG,IAAI,EAAEH,IAAI;MAAEC,MAAM,EAAEA;IAAM,CAAE,CAAC;IAC7DG,WAAW,EAAGC,KAAU,IAAKH,WAAW,CAAC;MAAEF,IAAI,EAAE,OAAO;MAAEK,KAAK,EAAEA;IAAK,CAAE;GACzE,CAAC,CACCb,IAAI,CAAEc,CAAM,IAAI;IACfrC,GAAG,GAAGqC,CAAC;IAEP,IAAI,CAACrC,GAAG,CAACsC,IAAI,EAAE,EAAE;MACf,MAAM,IAAIC,KAAK,CAAC,+BAA+B,CAAC;;IAGlDtC,SAAS,GAAGD,GAAG,CAACwC,kBAAkB,EAAE;IAEpCP,WAAW,CAAC;MAAEF,IAAI,EAAE;IAAM,CAAE,CAAC;EAC/B,CAAC,CAAC,CACDU,KAAK,CAAEC,CAAM,IAAI;IAChBT,WAAW,CAAC;MAAEF,IAAI,EAAE,OAAO;MAAEK,KAAK,EAAEM;IAAC,CAAE,CAAC;EAC1C,CAAC,CAAC;AACN,CAAC,CAAC,CACDD,KAAK,CAAEC,CAAC,IAAI;EACXT,WAAW,CAAC;IAAEF,IAAI,EAAE,OAAO;IAAEK,KAAK,EAAEM;EAAC,CAAE,CAAC;AAC1C,CAAC,CAAC;AAGJ,SAASC,YAAYA,CAACC,GAAO;EAC3B,IAAIC,OAAO,GAAO,EAAE;EAEpB,IAAG,CAAC,CAACD,GAAG,EAAEE,EAAE,EAAE;IACZ,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGH,GAAG,CAACf,IAAI,EAAE,EAAEkB,GAAG,EAAE,EAAE;MACzC,MAAMC,EAAE,GAAGJ,GAAG,CAACK,GAAG,CAACF,GAAG,CAAC;MACvB,IAAG,OAAOC,EAAE,KAAK,QAAQ,EAAE;QACzBE,MAAM,CAACC,IAAI,CAACH,EAAE,CAAC,CAACI,OAAO,CAAEC,GAAG,IAAI;UAC9B,IAAG,CAAC,CAACL,EAAE,CAACK,GAAG,CAAC,EAAEP,EAAE,EAAE;YAChBE,EAAE,CAACK,GAAG,CAAC,GAAGV,YAAY,CAACK,EAAE,CAACK,GAAG,CAAC,CAAC;;QAEnC,CAAC,CAAC;;MAEJR,OAAO,CAACE,GAAG,CAAC,GAAGC,EAAE;;GAGpB,MAAM;IACL,IAAG,OAAOJ,GAAG,KAAK,QAAQ,EAAE;MAC1BC,OAAO,GAAGD,GAAG;MACbM,MAAM,CAACC,IAAI,CAACP,GAAG,CAAC,CAACQ,OAAO,CAAEC,GAAG,IAAI;QAC/B,IAAG,CAAC,CAACT,GAAG,CAACS,GAAG,CAAC,EAAEP,EAAE,EAAE;UACjBD,OAAO,CAACQ,GAAG,CAAC,GAAGV,YAAY,CAACC,GAAG,CAACS,GAAG,CAAC,CAAC;;MAEzC,CAAC,CAAC;;;EAGN,OAAOR,OAAO;AAChB;AACA;AACAS,SAAS,GAAG,SAAAA,CAAUC,KAAK;EACzB,IAAI,CAACvD,GAAG,EAAE;IACR;;EAEF,MAAMoB,IAAI,GAAGmC,KAAK,CAACnC,IAAI;EAEvBH,OAAO,CAACC,GAAG,CAAC,QAAQ,EAAE;IAAElB,GAAG;IAAEoB;EAAI,CAAE,CAAC;EAEpC,IAAIA,IAAI,CAACW,IAAI,KAAK,SAAS,EAAE;IAC3B,MAAMyB,CAAC,GAAGpC,IAAI,CAACqC,IAAI;IACnB,MAAMC,MAAM,GAAG,IAAIC,UAAU,EAAE;IAC/BD,MAAM,CAACE,gBAAgB,CAAC,MAAM,EAAGL,KAAU,IAAI;MAC7CtC,OAAO,CAACC,GAAG,CAAC,YAAY,EAAEsC,CAAC,CAAC5B,IAAI,CAAC;MAEjC;MACA,MAAMF,MAAM,GAAG,IAAImC,UAAU,CAACN,KAAK,CAACO,MAAM,CAACC,MAAM,CAAC;MAClD,MAAMC,IAAI,GAAG,GAAG/D,SAAS,IAAIuD,CAAC,CAAC5B,IAAI,EAAE;MACrC5B,GAAG,CAACiE,EAAE,CAACC,SAAS,CAACF,IAAI,EAAEtC,MAAM,CAAC;MAE9B;MACA,IAAIxB,cAAc,KAAK,IAAI,EAAE;QAC3BA,cAAc,CAACiE,MAAM,EAAE;QACvBjE,cAAc,GAAG,IAAI;;MAGvB;MACAA,cAAc,GAAG,IAAIF,GAAG,CAACoE,cAAc,CAACJ,IAAI,CAAC;MAC7C,MAAM1D,GAAG,GAAGJ,cAAc,CAACmE,IAAI,EAAE;MAEjC,MAAMC,UAAU,GAAGpE,cAAc,CAACqE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;MACrD,MAAMC,IAAI,GAAGxE,GAAG,CAACyE,UAAU,EAAE;MAC7B,MAAMC,SAAS,GAAGC,KAAK,CAACC,IAAI,CAAC;QAAEC,MAAM,EAAEL,IAAI,CAAC3C,IAAI;MAAE,CAAE,EAAE,CAACiD,CAAC,EAAEC,CAAC,KAAKP,IAAI,CAACvB,GAAG,CAAC8B,CAAC,CAAC,CAAC;MAC5E9D,OAAO,CAACC,GAAG,CAAC;QAAEsD;MAAI,CAAE,CAAC;MACrB,MAAMQ,MAAM,GAAGV,UAAU,CAACU,MAAM;MAChC/D,OAAO,CAACC,GAAG,CAAC8D,MAAM,CAAC;MACnB,MAAMC,MAAM,GAAG/E,cAAc,CAACgF,QAAQ,CAAC,CAAC,CAAC;MACzCjE,OAAO,CAACC,GAAG,CAAC+D,MAAM,CAAC;MACnBhE,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEyB,YAAY,CAACsC,MAAM,CAAC,CAAC;MAC3D;MAEA,MAAME,KAAK,GAAG,EAAE;MAEhB,KAAK,IAAIpC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGiC,MAAM,CAACnD,IAAI,EAAE,EAAEkB,GAAG,EAAE,EAAE;QAC5C,MAAMqC,OAAO,GAAGJ,MAAM,CAAC/B,GAAG,CAACF,GAAG,CAAC;QAC/BoC,KAAK,CAACpC,GAAG,CAAC,GAAGqC,OAAO;QACpBD,KAAK,CAACpC,GAAG,CAAC,CAACsC,OAAO,GAAG,EAAE;QACvB,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGF,OAAO,CAACG,OAAO,CAAC1D,IAAI,EAAE,EAAEyD,GAAG,EAAE,EAAE;UACrDH,KAAK,CAACpC,GAAG,CAAC,CAACsC,OAAO,CAACG,IAAI,CAACJ,OAAO,CAACG,OAAO,CAACtC,GAAG,CAACqC,GAAG,CAAC,CAAC;;QAEnD,OAAOH,KAAK,CAACpC,GAAG,CAAC,CAACwC,OAAO;;MAG3BtE,OAAO,CAACC,GAAG,CAAC;QAAEiE;MAAK,CAAE,CAAC;MAEtBlD,WAAW,CAAC;QACVF,IAAI,EAAE,WAAW;QAAEH,IAAI,EAAE4B,CAAC,CAAC5B,IAAI;QAAER,IAAI,EAAE;UACrCd,GAAG;UACH2E,MAAM;UACNP,SAAS;UACTS;;OAEH,CAAC;IACJ,CAAC,CAAC;IACFzB,MAAM,CAAC+B,iBAAiB,CAACjC,CAAC,CAAC;;EAE7B,IAAIpC,IAAI,CAACW,IAAI,KAAK,UAAU,EAAE;IAC5B,MAAMkD,MAAM,GAAG/E,cAAc,CAACgF,QAAQ,CAAC9D,IAAI,CAACsE,OAAO,CAAC;IACpDzE,OAAO,CAACC,GAAG,CAAC+D,MAAM,CAAC;IACnBhE,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEyB,YAAY,CAACsC,MAAM,CAAC,CAAC;IAC3DhD,WAAW,CAAC;MACVF,IAAI,EAAE,UAAU;MAAEX,IAAI,EAAE;QAEtB6D;;KAGH,CAAC;;AAEN,CAAC,C","sources":["./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack/bootstrap","./src/app/wiregasm.worker.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/// \n\n// addEventListener('message', ({ data }) => {\n// const response = `worker response to ${data}`;\n// postMessage(response);\n// });\n\n\n\n\n// load the Wiregasm library and pako\n//\n// pako is only used to inflate the compressed wasm and data files\n// if you are not compressing the wasm and data files, you do not need to include pako\n//\n// import * from '../wiregasm-lib'\n// import wiregasm from \"../wiregasm-lib/wiregasm.js\";\n// import pako from \"../wiregasm-lib/pako.js\";\n\nimportScripts(\n \"../wiregasm-lib/wiregasm.js\",\n \"../wiregasm-lib/pako.js\"\n);\n\n\ndeclare const loadWiregasm: any;\ndeclare const pako: any;\n\nlet lib: any = null;\nlet uploadDir: any = null;\nlet currentSession: any = null;\n\nconst inflateRemoteBuffer = async (url: string) => {\n const res = await fetch(url);\n const buf = await res.arrayBuffer();\n return pako.inflate(buf);\n};\n\nconst fetchPackages = async () => {\n console.log(\"Fetching packages\");\n let [wasm, data] = await Promise.all([\n await inflateRemoteBuffer(\n \"../wiregasm-lib/wiregasm.wasm.gz\"\n ),\n await inflateRemoteBuffer(\n \"../wiregasm-lib/wiregasm.data.gz\"\n ),\n ]);\n\n return { wasm, data };\n};\n\nfetchPackages()\n .then(({ wasm, data }) => {\n loadWiregasm({\n wasmBinary: wasm.buffer,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getPreloadedPackage(name: string, size: any) {\n return data.buffer;\n },\n handleStatus: (type: any, status: any) =>\n postMessage({ type: \"status\", code: type, status: status }),\n handleError: (error: any) => postMessage({ type: \"error\", error: error }),\n })\n .then((l: any) => {\n lib = l;\n\n if (!lib.init()) {\n throw new Error(\"Failed to initialize Wiregasm\");\n }\n\n uploadDir = lib.getUploadDirectory();\n\n postMessage({ type: \"init\" });\n })\n .catch((e: any) => {\n postMessage({ type: \"error\", error: e });\n });\n })\n .catch((e) => {\n postMessage({ type: \"error\", error: e });\n });\n\n\nfunction treeToObject(vec:any) {\n let outData:any = [];\n\n if(!!vec?.$$) {\n for (let row = 0; row < vec.size(); row++) {\n const el = vec.get(row);\n if(typeof el === 'object') {\n Object.keys(el).forEach((key) => {\n if(!!el[key]?.$$) {\n el[key] = treeToObject(el[key]);\n }\n })\n }\n outData[row] = el;\n }\n\n } else {\n if(typeof vec === 'object') {\n outData = vec;\n Object.keys(vec).forEach((key) => {\n if(!!vec[key]?.$$) {\n outData[key] = treeToObject(vec[key]);\n }\n })\n }\n }\n return outData;\n}\n// Event listener to receive messages from the main script\nonmessage = function (event) {\n if (!lib) {\n return;\n }\n const data = event.data;\n\n console.log('worker', { lib, data });\n\n if (data.type === \"process\") {\n const f = data.file;\n const reader = new FileReader();\n reader.addEventListener(\"load\", (event: any) => {\n console.log(\"Processing\", f.name);\n\n // write the file to the emscripten filesystem\n const buffer = new Uint8Array(event.target.result);\n const path = `${uploadDir}/${f.name}`;\n lib.FS.writeFile(path, buffer);\n\n // delete the current session if it exists\n if (currentSession !== null) {\n currentSession.delete();\n currentSession = null;\n }\n\n // create a new session\n currentSession = new lib.DissectSession(path);\n const res = currentSession.load();\n\n const framesData = currentSession.getFrames('', 0, 0);\n const cols = lib.getColumns();\n const colsArray = Array.from({ length: cols.size() }, (x, k) => cols.get(k))\n console.log({ cols })\n const frames = framesData.frames;\n console.log(frames)\n const frame1 = currentSession.getFrame(1);\n console.log(frame1)\n console.log('data_sources as object', treeToObject(frame1))\n // console.log('tree as object', treeToObject(frame1.tree))\n\n const table = [];\n\n for (let row = 0; row < frames.size(); row++) {\n const element = frames.get(row);\n table[row] = element;\n table[row].colData = [];\n for (let col = 0; col < element.columns.size(); col++) {\n table[row].colData.push(element.columns.get(col));\n }\n delete table[row].columns;\n }\n\n console.log({ table });\n\n postMessage({\n type: \"processed\", name: f.name, data: {\n res,\n frame1,\n colsArray,\n table\n }\n });\n });\n reader.readAsArrayBuffer(f);\n }\n if (data.type === \"getFrame\") {\n const frame1 = currentSession.getFrame(data.frameId);\n console.log(frame1)\n console.log('data_sources as object', treeToObject(frame1))\n postMessage({\n type: \"getFrame\", data: {\n\n frame1,\n\n }\n });\n }\n};\n"],"names":["_asyncToGenerator","require","default","importScripts","lib","uploadDir","currentSession","inflateRemoteBuffer","_ref","url","res","fetch","buf","arrayBuffer","pako","inflate","_x","apply","arguments","fetchPackages","_ref2","console","log","wasm","data","Promise","all","then","loadWiregasm","wasmBinary","buffer","getPreloadedPackage","name","size","handleStatus","type","status","postMessage","code","handleError","error","l","init","Error","getUploadDirectory","catch","e","treeToObject","vec","outData","$$","row","el","get","Object","keys","forEach","key","onmessage","event","f","file","reader","FileReader","addEventListener","Uint8Array","target","result","path","FS","writeFile","delete","DissectSession","load","framesData","getFrames","cols","getColumns","colsArray","Array","from","length","x","k","frames","frame1","getFrame","table","element","colData","col","columns","push","readAsArrayBuffer","frameId"],"sourceRoot":"webpack:///","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/webshark/main.181a1ef948f495ba.js b/dist/webshark/main.181a1ef948f495ba.js deleted file mode 100644 index 1edf06f..0000000 --- a/dist/webshark/main.181a1ef948f495ba.js +++ /dev/null @@ -1,200407 +0,0 @@ -(self["webpackChunkwebshark"] = self["webpackChunkwebshark"] || []).push([[179],{ - -/***/ 3966: -/*!***************************************!*\ - !*** ./src/app/app-routing.module.ts ***! - \***************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AppRoutingModule: () => (/* binding */ AppRoutingModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ 7947); - - - -const routes = []; -let AppRoutingModule = class AppRoutingModule {}; -AppRoutingModule = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgModule)({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__.RouterModule.forRoot(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__.RouterModule] -})], AppRoutingModule); - -/***/ }), - -/***/ 6401: -/*!**********************************!*\ - !*** ./src/app/app.component.ts ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AppComponent: () => (/* binding */ AppComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _app_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app.component.scss?ngResource */ 9595); -/* harmony import */ var _app_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _services_wiregasm_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./services/wiregasm.service */ 6158); - - - - -let AppComponent = class AppComponent { - constructor(wiregasmService) { - this.wiregasmService = wiregasmService; - this.msg = []; - this.done = false; - this.isReady = false; - this.parsingProgress = 100; - this.wiregasmService.listen().subscribe(data => { - console.log('wiregasmService.listen', data); - if (data?.isParsing) { - this.parsingProgress = +data?.parsingProgress?.toFixed(2); - } - if (data?.status) { - this.msg.push(data.status); - } - if (data?.type === 'init') { - this.isReady = true; - setTimeout(() => { - this.done = true; - }, 1000); - } - }); - } - static #_ = this.ctorParameters = () => [{ - type: _services_wiregasm_service__WEBPACK_IMPORTED_MODULE_1__.WiregasmService - }]; -}; -AppComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Component)({ - selector: 'app-root', - template: ` -
-

- Parsing file: {{ parsingProgress.toFixed(2) }}% -

-
-
-
-
-

Wiregasm:

-
{{item}}
-
-
- `, - styles: [(_app_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0___default())] -})], AppComponent); - -/***/ }), - -/***/ 6675: -/*!****************************************!*\ - !*** ./src/app/app.material-module.ts ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MaterialModule: () => (/* binding */ MaterialModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/a11y */ 3170); -/* harmony import */ var _angular_cdk_drag_drop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/cdk/drag-drop */ 7792); -/* harmony import */ var _angular_cdk_portal__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! @angular/cdk/portal */ 3517); -/* harmony import */ var _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! @angular/cdk/scrolling */ 275); -/* harmony import */ var _angular_cdk_stepper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/cdk/stepper */ 3507); -/* harmony import */ var _angular_cdk_table__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/cdk/table */ 845); -/* harmony import */ var _angular_cdk_tree__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/cdk/tree */ 6747); -/* harmony import */ var _angular_material_autocomplete__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/material/autocomplete */ 9892); -/* harmony import */ var _angular_material_badge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material/badge */ 5392); -/* harmony import */ var _angular_material_bottom_sheet__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/material/bottom-sheet */ 8740); -/* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/material/button */ 895); -/* harmony import */ var _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/material/button-toggle */ 727); -/* harmony import */ var _angular_material_card__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/material/card */ 8497); -/* harmony import */ var _angular_material_checkbox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @angular/material/checkbox */ 6658); -/* harmony import */ var _angular_material_chips__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @angular/material/chips */ 1757); -/* harmony import */ var _angular_material_stepper__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/material/stepper */ 6272); -/* harmony import */ var _angular_material_datepicker__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @angular/material/datepicker */ 2226); -/* harmony import */ var _angular_material_dialog__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/material/dialog */ 7401); -/* harmony import */ var _angular_material_divider__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/material/divider */ 9400); -/* harmony import */ var _angular_material_expansion__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @angular/material/expansion */ 8060); -/* harmony import */ var _angular_material_grid_list__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @angular/material/grid-list */ 647); -/* harmony import */ var _angular_material_icon__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @angular/material/icon */ 6515); -/* harmony import */ var _angular_material_input__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @angular/material/input */ 26); -/* harmony import */ var _angular_material_list__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @angular/material/list */ 3228); -/* harmony import */ var _angular_material_menu__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @angular/material/menu */ 8128); -/* harmony import */ var _angular_material_core__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @angular/material/core */ 5309); -/* harmony import */ var _angular_material_paginator__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @angular/material/paginator */ 9687); -/* harmony import */ var _angular_material_progress_bar__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @angular/material/progress-bar */ 8173); -/* harmony import */ var _angular_material_progress_spinner__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @angular/material/progress-spinner */ 3910); -/* harmony import */ var _angular_material_radio__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @angular/material/radio */ 2106); -/* harmony import */ var _angular_material_select__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @angular/material/select */ 6355); -/* harmony import */ var _angular_material_sidenav__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @angular/material/sidenav */ 1465); -/* harmony import */ var _angular_material_slider__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @angular/material/slider */ 549); -/* harmony import */ var _angular_material_slide_toggle__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @angular/material/slide-toggle */ 9293); -/* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @angular/material/snack-bar */ 9409); -/* harmony import */ var _angular_material_sort__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @angular/material/sort */ 7963); -/* harmony import */ var _angular_material_table__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @angular/material/table */ 6798); -/* harmony import */ var _angular_material_tabs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @angular/material/tabs */ 989); -/* harmony import */ var _angular_material_toolbar__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! @angular/material/toolbar */ 2484); -/* harmony import */ var _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! @angular/material/tooltip */ 702); -/* harmony import */ var _angular_material_tree__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! @angular/material/tree */ 7321); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -let MaterialModule = class MaterialModule {}; -MaterialModule = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgModule)({ - exports: [_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_2__.A11yModule, _angular_cdk_stepper__WEBPACK_IMPORTED_MODULE_3__.CdkStepperModule, _angular_cdk_table__WEBPACK_IMPORTED_MODULE_4__.CdkTableModule, _angular_cdk_tree__WEBPACK_IMPORTED_MODULE_5__.CdkTreeModule, _angular_cdk_drag_drop__WEBPACK_IMPORTED_MODULE_6__.DragDropModule, _angular_material_autocomplete__WEBPACK_IMPORTED_MODULE_7__.MatAutocompleteModule, _angular_material_badge__WEBPACK_IMPORTED_MODULE_8__.MatBadgeModule, _angular_material_bottom_sheet__WEBPACK_IMPORTED_MODULE_9__.MatBottomSheetModule, _angular_material_button__WEBPACK_IMPORTED_MODULE_10__.MatButtonModule, _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_11__.MatButtonToggleModule, _angular_material_card__WEBPACK_IMPORTED_MODULE_12__.MatCardModule, _angular_material_checkbox__WEBPACK_IMPORTED_MODULE_13__.MatCheckboxModule, _angular_material_chips__WEBPACK_IMPORTED_MODULE_14__.MatChipsModule, _angular_material_stepper__WEBPACK_IMPORTED_MODULE_15__.MatStepperModule, _angular_material_datepicker__WEBPACK_IMPORTED_MODULE_16__.MatDatepickerModule, _angular_material_dialog__WEBPACK_IMPORTED_MODULE_17__.MatDialogModule, _angular_material_divider__WEBPACK_IMPORTED_MODULE_18__.MatDividerModule, _angular_material_expansion__WEBPACK_IMPORTED_MODULE_19__.MatExpansionModule, _angular_material_grid_list__WEBPACK_IMPORTED_MODULE_20__.MatGridListModule, _angular_material_icon__WEBPACK_IMPORTED_MODULE_21__.MatIconModule, _angular_material_input__WEBPACK_IMPORTED_MODULE_22__.MatInputModule, _angular_material_list__WEBPACK_IMPORTED_MODULE_23__.MatListModule, _angular_material_menu__WEBPACK_IMPORTED_MODULE_24__.MatMenuModule, _angular_material_core__WEBPACK_IMPORTED_MODULE_25__.MatNativeDateModule, _angular_material_paginator__WEBPACK_IMPORTED_MODULE_26__.MatPaginatorModule, _angular_material_progress_bar__WEBPACK_IMPORTED_MODULE_27__.MatProgressBarModule, _angular_material_progress_spinner__WEBPACK_IMPORTED_MODULE_28__.MatProgressSpinnerModule, _angular_material_radio__WEBPACK_IMPORTED_MODULE_29__.MatRadioModule, _angular_material_core__WEBPACK_IMPORTED_MODULE_25__.MatRippleModule, _angular_material_select__WEBPACK_IMPORTED_MODULE_30__.MatSelectModule, _angular_material_sidenav__WEBPACK_IMPORTED_MODULE_31__.MatSidenavModule, _angular_material_slider__WEBPACK_IMPORTED_MODULE_32__.MatSliderModule, _angular_material_slide_toggle__WEBPACK_IMPORTED_MODULE_33__.MatSlideToggleModule, _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_34__.MatSnackBarModule, _angular_material_sort__WEBPACK_IMPORTED_MODULE_35__.MatSortModule, _angular_material_table__WEBPACK_IMPORTED_MODULE_36__.MatTableModule, _angular_material_tabs__WEBPACK_IMPORTED_MODULE_37__.MatTabsModule, _angular_material_toolbar__WEBPACK_IMPORTED_MODULE_38__.MatToolbarModule, _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_39__.MatTooltipModule, _angular_material_tree__WEBPACK_IMPORTED_MODULE_40__.MatTreeModule, _angular_cdk_portal__WEBPACK_IMPORTED_MODULE_41__.PortalModule, _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_42__.ScrollingModule] -})], MaterialModule); - -/***/ }), - -/***/ 8629: -/*!*******************************!*\ - !*** ./src/app/app.module.ts ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AppModule: () => (/* binding */ AppModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _components_controls_flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/controls/flexible-chart/flexible-chart.module */ 6821); -/* harmony import */ var _components_controls_frame_hex_frame_hex_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/controls/frame-hex/frame-hex.module */ 2746); -/* harmony import */ var _components_controls_pcap_uploader_pcap_uploader_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/controls/pcap-uploader/pcap-uploader.module */ 6942); -/* harmony import */ var _components_files_page_files_page_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/files-page/files-page.module */ 458); -/* harmony import */ var _components_menu_menu_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/menu/menu.module */ 6426); -/* harmony import */ var _components_controls_webshark_webshark_module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/controls/webshark/webshark.module */ 2715); -/* harmony import */ var _components_Home_Home_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Home/Home.component */ 5979); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @angular/platform-browser */ 6480); -/* harmony import */ var _app_material_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./app.material-module */ 6675); -/* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./app-routing.module */ 3966); -/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./app.component */ 6401); -/* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/platform-browser/animations */ 4987); -/* harmony import */ var _app_routing__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./app.routing */ 34); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/common/http */ 4860); -/* harmony import */ var _helper_error_interceptor__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./helper/error.interceptor */ 1142); -/* harmony import */ var _components_controls_modal_resizable_modal_resizable_module__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/controls/modal-resizable/modal-resizable.module */ 4554); -/* harmony import */ var _components_controls_tap_tap_page_module__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/controls/tap/tap-page.module */ 9942); - - - - - - - - - - - - - - - - - - - -let AppModule = class AppModule {}; -AppModule = (0,tslib__WEBPACK_IMPORTED_MODULE_14__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_15__.NgModule)({ - declarations: [_app_component__WEBPACK_IMPORTED_MODULE_9__.AppComponent, _components_Home_Home_component__WEBPACK_IMPORTED_MODULE_6__.HomeComponent], - imports: [_app_material_module__WEBPACK_IMPORTED_MODULE_7__.MaterialModule, _angular_platform_browser__WEBPACK_IMPORTED_MODULE_16__.BrowserModule, _app_routing_module__WEBPACK_IMPORTED_MODULE_8__.AppRoutingModule, _app_routing__WEBPACK_IMPORTED_MODULE_10__.routing, _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_17__.BrowserAnimationsModule, _components_controls_webshark_webshark_module__WEBPACK_IMPORTED_MODULE_5__.WebsharkModule, _components_menu_menu_module__WEBPACK_IMPORTED_MODULE_4__.MenuModule, _angular_common_http__WEBPACK_IMPORTED_MODULE_18__.HttpClientModule, _angular_common_http__WEBPACK_IMPORTED_MODULE_18__.HttpClientJsonpModule, _components_files_page_files_page_module__WEBPACK_IMPORTED_MODULE_3__.FilesPageModule, _components_controls_pcap_uploader_pcap_uploader_module__WEBPACK_IMPORTED_MODULE_2__.PcapUploaderModule, _components_controls_frame_hex_frame_hex_module__WEBPACK_IMPORTED_MODULE_1__.FrameHexModule, _components_controls_modal_resizable_modal_resizable_module__WEBPACK_IMPORTED_MODULE_12__.ModalResizableModule, _components_controls_tap_tap_page_module__WEBPACK_IMPORTED_MODULE_13__.TapPageModule, _components_controls_flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_0__.FlexibleChartModule], - bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_9__.AppComponent], - schemas: [_angular_core__WEBPACK_IMPORTED_MODULE_15__.CUSTOM_ELEMENTS_SCHEMA], - providers: [{ - provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_18__.HTTP_INTERCEPTORS, - useClass: _helper_error_interceptor__WEBPACK_IMPORTED_MODULE_11__.ErrorInterceptor, - multi: true - }] -})], AppModule); - -/***/ }), - -/***/ 34: -/*!********************************!*\ - !*** ./src/app/app.routing.ts ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ routing: () => (/* binding */ routing) -/* harmony export */ }); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/router */ 7947); -/* harmony import */ var _components_Home_Home_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Home/Home.component */ 5979); - - -// import { AuthGuard } from './guards'; -// import { -// SearchGridCallComponent, -// LoginComponent, -// DashboardComponent, -// PreferenceComponent -// } from '@app/components'; -const appRoutes = [{ - path: '', - component: _components_Home_Home_component__WEBPACK_IMPORTED_MODULE_0__.HomeComponent -} -// { -// path: 'dashboard/:id', -// component: DashboardComponent, -// canActivate: [AuthGuard] -// }, { -// path: 'preference/:id', -// component: PreferenceComponent, -// canActivate: [AuthGuard] -// }, { -// path: 'search/result', -// component: SearchGridCallComponent, -// canActivate: [AuthGuard] -// }, { -// path: 'search/result/:id', -// component: SearchGridCallComponent, -// canActivate: [AuthGuard] -// }, { -// path: 'login', -// component: LoginComponent, -// outlet: 'system' -// }, { -// path: '', -// redirectTo: 'dashboard/home', -// pathMatch: 'full' -// }, { -// path: '**', redirectTo: 'dashboard/home' -// }, { -// path: 'dashboard/home/**', redirectTo: 'dashboard/home' -// } -]; - -const routing = _angular_router__WEBPACK_IMPORTED_MODULE_1__.RouterModule.forRoot(appRoutes, { - enableTracing: false -}); - -/***/ }), - -/***/ 5979: -/*!***************************************************!*\ - !*** ./src/app/components/Home/Home.component.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HomeComponent: () => (/* binding */ HomeComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _Home_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Home.component.html?ngResource */ 4548); -/* harmony import */ var _Home_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Home.component.scss?ngResource */ 6482); -/* harmony import */ var _Home_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Home_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _controls_modal_resizable_modal_resizable_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../controls/modal-resizable/modal-resizable.service */ 8835); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @environments/environment */ 553); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - - -let HomeComponent = class HomeComponent { - constructor(webSharkDataService, modalResizableService) { - this.webSharkDataService = webSharkDataService; - this.modalResizableService = modalResizableService; - this.typeOfChart = 'area'; - this.isKIOSK = !!_environments_environment__WEBPACK_IMPORTED_MODULE_4__.environment.kiosk; - this.isFileOnLink = false; - this.dialogs = []; - this.framePosition = ['vertical', 'horizontal']; - this.isFileOnLink = !location.hash; - this.files = this.isFileOnLink; - this.modalResizableService.event.subscribe(({ - open, - data - }) => { - if (open) { - this.dialogs.push(data.link); - } - }); - } - ngOnInit() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - yield _this.getFiles(); - })(); - } - getFiles() { - var _this2 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const getFiles = dir => _this2.webSharkDataService.getFiles(dir); - const fileData = yield getFiles(); - const mapping = (file, prefix = '/') => { - if (file.dir === true) { - const o = { - name: file.name + ` [..loading]`, - description: prefix, - children: [] - }; - getFiles(file.name).then(data => { - const arrFiles = data.files.map(i => mapping(i, file.name)); - o.name = file.name; - o.description = prefix; - o.children.push(...arrFiles); - _this2.files = [..._this2.files]; - }); - return o; - } - file.description = prefix; - return file; - }; - const files = fileData.files.map(i => mapping(i, '')); - _this2.files = [...files.filter(i => i.children), ...files.filter(i => !i.children)]; - // console.log('FILES', this.files); - })(); - } - - onClose(idx) { - this.dialogs = this.dialogs.filter((i, k) => k !== idx); - } - get captureFile() { - return 'file.pcap'; //this.webSharkDataService.getCapture(); - } - - downloadFile(filename) { - if (!filename) { - return; - } - // console.log('downloading file', filename); - const href = encodeURIComponent('/' + filename); - const url = `/webshark/json?method=download&capture=${href}&token=self`; - const link = document.createElement('a'); - link.setAttribute('target', '_blank'); - link.setAttribute('href', url); - link.setAttribute('download', filename); - document.body.appendChild(link); - link.click(); - // link.remove(); - } - - saveToFile(data, filename, type = 'application/octet-stream') { - const file = new Blob([data], { - type: type - }); - const nav = window.navigator; - if (nav.msSaveOrOpenBlob) { - // IE10+ - nav.msSaveOrOpenBlob(file, filename); - } else { - // Others - const a = document.createElement('a'), - url = URL.createObjectURL(file); - a.href = url; - a.target = '(file)'; - a.download = filename; - document.body.appendChild(a); - a.click(); - setTimeout(function () { - document.body.removeChild(a); - window.URL.revokeObjectURL(url); - }, 0); - } - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_5__.WiregasmService - }, { - type: _controls_modal_resizable_modal_resizable_service__WEBPACK_IMPORTED_MODULE_3__.ModalResizableService - }]; -}; -HomeComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.Component)({ - selector: 'app-Home', - template: _Home_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - styles: [(_Home_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], HomeComponent); - -/***/ }), - -/***/ 611: -/*!************************************************************!*\ - !*** ./src/app/components/controls/alert/alert.service.ts ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AlertService: () => (/* binding */ AlertService) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var C_work_wasmshark_src_app_components_controls_alert_alert_service_ts_scss_ngResource_C_work_wasmshark_node_modules_ngtools_webpack_src_loaders_inline_resource_js_data_CiAgICAuc3VjY2VzcyB7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgbWFyZ2luOiAtMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEJDMzRBOwogICAgfQogICAgLmVycm9yIHsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxcmVtOwogICAgICBtYXJnaW46IC0xcmVtOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7CiAgICB9CgogIA_3D_3D_C_work_wasmshark_src_app_components_controls_alert_alert_service_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/app/components/controls/alert/alert.service.ts.scss?ngResource!=!./node_modules/@ngtools/webpack/src/loaders/inline-resource.js?data=CiAgICAuc3VjY2VzcyB7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgbWFyZ2luOiAtMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEJDMzRBOwogICAgfQogICAgLmVycm9yIHsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxcmVtOwogICAgICBtYXJnaW46IC0xcmVtOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7CiAgICB9CgogIA%3D%3D!./src/app/components/controls/alert/alert.service.ts */ 7334); -/* harmony import */ var C_work_wasmshark_src_app_components_controls_alert_alert_service_ts_scss_ngResource_C_work_wasmshark_node_modules_ngtools_webpack_src_loaders_inline_resource_js_data_CiAgICAuc3VjY2VzcyB7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgbWFyZ2luOiAtMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEJDMzRBOwogICAgfQogICAgLmVycm9yIHsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxcmVtOwogICAgICBtYXJnaW46IC0xcmVtOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7CiAgICB9CgogIA_3D_3D_C_work_wasmshark_src_app_components_controls_alert_alert_service_ts__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(C_work_wasmshark_src_app_components_controls_alert_alert_service_ts_scss_ngResource_C_work_wasmshark_node_modules_ngtools_webpack_src_loaders_inline_resource_js_data_CiAgICAuc3VjY2VzcyB7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgbWFyZ2luOiAtMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEJDMzRBOwogICAgfQogICAgLmVycm9yIHsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxcmVtOwogICAgICBtYXJnaW46IC0xcmVtOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7CiAgICB9CgogIA_3D_3D_C_work_wasmshark_src_app_components_controls_alert_alert_service_ts__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/material/snack-bar */ 9409); - - - - -let AlertTemplateComponent = class AlertTemplateComponent { - constructor(data) { - this.data = data; - } - static #_ = this.ctorParameters = () => [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject, - args: [_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__.MAT_SNACK_BAR_DATA] - }] - }]; -}; -AlertTemplateComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component)({ - selector: 'alert-template', - template: `
{{data.message}}
`, - styles: [(C_work_wasmshark_src_app_components_controls_alert_alert_service_ts_scss_ngResource_C_work_wasmshark_node_modules_ngtools_webpack_src_loaders_inline_resource_js_data_CiAgICAuc3VjY2VzcyB7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgbWFyZ2luOiAtMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEJDMzRBOwogICAgfQogICAgLmVycm9yIHsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxcmVtOwogICAgICBtYXJnaW46IC0xcmVtOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7CiAgICB9CgogIA_3D_3D_C_work_wasmshark_src_app_components_controls_alert_alert_service_ts__WEBPACK_IMPORTED_MODULE_0___default())] -})], AlertTemplateComponent); -let AlertService = class AlertService { - constructor(snackBar) { - this.snackBar = snackBar; - } - alert(type, message, duration = 5) { - this.snackBar.openFromComponent(AlertTemplateComponent, { - data: { - type, - message - }, - duration: 1000 * duration, - horizontalPosition: 'left', - verticalPosition: 'bottom' - }); - } - success(message, duration = 5) { - this.alert('success', message, duration); - } - error(message, duration = 5) { - this.alert('error', message, duration); - } - static #_ = this.ctorParameters = () => [{ - type: _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__.MatSnackBar - }]; -}; -AlertService = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)({ - providedIn: 'root' -})], AlertService); - -/***/ }), - -/***/ 5257: -/*!**********************************************************************************!*\ - !*** ./src/app/components/controls/chart-and-table/chart-and-table.component.ts ***! - \**********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ChartAndTableComponent: () => (/* binding */ ChartAndTableComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _chart_and_table_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chart-and-table.component.html?ngResource */ 973); -/* harmony import */ var _chart_and_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chart-and-table.component.scss?ngResource */ 8058); -/* harmony import */ var _chart_and_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_chart_and_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _flexible_chart_flexible_chart_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../flexible-chart/flexible-chart.component */ 1764); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/helper/functions */ 9978); - - - - - - -let ChartAndTableComponent = class ChartAndTableComponent { - set data(val) { - if (!val) { - return; - } - // console.log({ val }); - const _data = val; - const arrTitle = []; - Object.entries(_data).forEach(([key, value]) => { - if (Array.isArray(value)) { - // console.log({ key, value }); - this._data = value || []; - } else { - // this.title += `${value}`; - arrTitle.push(value); - } - }); - /** - * get data for chart - */ - // - // console.log('this._data', this._data); - var o = {}; - this._data.forEach(i => { - // console.log(i) - Object.entries(i).map(([key, val]) => { - if (typeof val === 'number') { - if (!o[key]) { - o[key] = []; - } - o[key].push(val); - } - }); - }); - this.chartData = []; - Object.entries(o).forEach(([key, val]) => { - this.chartData.push({ - typeOfChart: _flexible_chart_flexible_chart_component__WEBPACK_IMPORTED_MODULE_2__.ChartType.AREA, - color: `#${(0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.hash)(key, 6)}`, - name: key, - data: val - }); - }); - this.title = arrTitle.join(' | '); - } - getKeys(obj) { - return Object.keys(obj); - } - get data() { - return this._data; - } - constructor() { - this._data = []; - this.title = ''; - const rnd = () => Array.from({ - length: Math.floor(Math.random() * 50) - }, (x, k) => Math.floor(Math.random() * 10 + 20)); - this.chartData = [{ - typeOfChart: _flexible_chart_flexible_chart_component__WEBPACK_IMPORTED_MODULE_2__.ChartType.BAR, - color: '#F00', - data: [...rnd()] - }, - // { color: '#0F0', data: [...rnd()]}, - // { color: '#00F', data: [...rnd()]}, - { - typeOfChart: _flexible_chart_flexible_chart_component__WEBPACK_IMPORTED_MODULE_2__.ChartType.AREA, - color: '#FF0', - data: [...rnd()] - }, { - typeOfChart: _flexible_chart_flexible_chart_component__WEBPACK_IMPORTED_MODULE_2__.ChartType.LINE, - color: '#090', - data: [...rnd()] - }]; - } - ngOnInit() {} - static #_ = this.ctorParameters = () => []; - static #_2 = this.propDecorators = { - data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }] - }; -}; -ChartAndTableComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({ - selector: 'chart-and-table', - template: _chart_and_table_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - styles: [(_chart_and_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], ChartAndTableComponent); - -/***/ }), - -/***/ 3267: -/*!*******************************************************************************!*\ - !*** ./src/app/components/controls/chart-and-table/chart-and-table.module.ts ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ChartAndTableModule: () => (/* binding */ ChartAndTableModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_material_card__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material/card */ 8497); -/* harmony import */ var _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/cdk/scrolling */ 275); -/* harmony import */ var angular_split__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! angular-split */ 6944); -/* harmony import */ var _flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../flexible-chart/flexible-chart.module */ 6821); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _chart_and_table_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chart-and-table.component */ 5257); -/* harmony import */ var _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../no-data/no-data.module */ 5284); - - - - - - - - - -let ChartAndTableModule = class ChartAndTableModule {}; -ChartAndTableModule = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_5__.CommonModule, _flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_0__.FlexibleChartModule, _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_2__.NoDataModule, angular_split__WEBPACK_IMPORTED_MODULE_6__.AngularSplitModule, _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_7__.ScrollingModule, _angular_material_card__WEBPACK_IMPORTED_MODULE_8__.MatCardModule], - declarations: [_chart_and_table_component__WEBPACK_IMPORTED_MODULE_1__.ChartAndTableComponent], - exports: [_chart_and_table_component__WEBPACK_IMPORTED_MODULE_1__.ChartAndTableComponent] -})], ChartAndTableModule); - -/***/ }), - -/***/ 4201: -/*!****************************************************************************!*\ - !*** ./src/app/components/controls/custom-table/custom-table.component.ts ***! - \****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ CustomTableComponent: () => (/* binding */ CustomTableComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _custom_table_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./custom-table.component.html?ngResource */ 7332); -/* harmony import */ var _custom_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom-table.component.scss?ngResource */ 3044); -/* harmony import */ var _custom_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_custom_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_material_paginator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/material/paginator */ 9687); -/* harmony import */ var _angular_material_sort__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/sort */ 7963); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var ng_table_virtual_scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ng-table-virtual-scroll */ 3597); - - - - - - - - -// dataSource = new TableVirtualScrollDataSource(DATA); -let CustomTableComponent = class CustomTableComponent { - get columnsValue() { - return this.isDictionary ? Object.values(this.columns) : this.columns; - } - getKeyBy(value) { - return this.isDictionary ? Object.entries(this.columns).find(([key, val]) => val === value)?.[0] : value; - } - set details(val) { - this.dataSource = new ng_table_virtual_scroll__WEBPACK_IMPORTED_MODULE_3__.TableVirtualScrollDataSource(val); - if (this.isPaginator) { - this.dataSource.paginator = this.paginator; - } - this.dataSource.sort = this.sort; - this.dataSource.filterPredicate = (data, filtersJson) => { - const matchFilter = []; - const filters = _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.Functions.JSON_parse(filtersJson); - filters.forEach(filter => { - const value = data[filter.id] === null ? '' : data[filter.id] + ''; - matchFilter.push(value.toLowerCase().includes((filter.value + '').toLowerCase())); - }); - return matchFilter.every(Boolean); - }; - this.cdr.detectChanges(); - } - setSelected(index) { - this.selectedRowIndex = this.isSelectedByClick ? index : -1; - this.cdr.detectChanges(); - } - getSelected(index) { - return this.selectedRowIndex === index; - } - constructor(cdr) { - this.cdr = cdr; - this.columns = []; - this.isDictionary = false; - this.columnsFilter = []; - this.isSelectedByClick = false; - this.selectedRowIndex = -1; // -1 is selected nothings - this.rowClick = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.EventEmitter(); - this.rowDblClick = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.EventEmitter(); - this.dataSource = new ng_table_virtual_scroll__WEBPACK_IMPORTED_MODULE_3__.TableVirtualScrollDataSource([]); - this.tableFilters = []; - this.isPaginator = true; - } - onRowClick(row, indexItem, event) { - this.setSelected(indexItem); - this.rowClick.emit({ - row, - indexItem, - event - }); - this.cdr.detectChanges(); - } - onRowDblClick(row, indexItem, event) { - this.rowDblClick.emit({ - row, - indexItem, - event - }); - } - checkFilterColumn(columnName) { - return !!this.columnsFilter.includes(columnName); - } - applyFilter(event, columnId) { - const filterValue = event?.target?.value || ''; - const itemFilter = this.tableFilters.find(i => i.id === columnId); - if (itemFilter) { - itemFilter.value = filterValue; - } else { - this.tableFilters.push({ - id: columnId, - value: filterValue + '' - }); - } - this.tableFilters = this.tableFilters.filter(i => !!i.value); - this.dataSource.filter = JSON.stringify(this.tableFilters); - if (this.isPaginator && this.dataSource.paginator) { - this.dataSource?.paginator?.firstPage(); - } - this.cdr.detectChanges(); - } - static #_ = this.ctorParameters = () => [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectorRef - }]; - static #_2 = this.propDecorators = { - columns: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - isDictionary: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - columnsFilter: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - isSelectedByClick: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - rowClick: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Output - }], - rowDblClick: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Output - }], - sort: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: [_angular_material_sort__WEBPACK_IMPORTED_MODULE_5__.MatSort, { - static: true - }] - }], - paginator: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: [_angular_material_paginator__WEBPACK_IMPORTED_MODULE_6__.MatPaginator, { - static: true - }] - }], - isPaginator: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - details: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }] - }; -}; -CustomTableComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_7__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({ - selector: 'app-custom-table', - template: _custom_table_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectionStrategy.OnPush, - styles: [(_custom_table_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], CustomTableComponent); - -/***/ }), - -/***/ 5599: -/*!*************************************************************************!*\ - !*** ./src/app/components/controls/custom-table/custom-table.module.ts ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ CustomTableModule: () => (/* binding */ CustomTableModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _custom_table_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./custom-table.component */ 4201); -/* harmony import */ var _angular_material_paginator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/material/paginator */ 9687); -/* harmony import */ var _angular_material_table__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/table */ 6798); -/* harmony import */ var _angular_material_sort__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/material/sort */ 7963); -/* harmony import */ var _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/cdk/scrolling */ 275); -/* harmony import */ var ng_table_virtual_scroll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ng-table-virtual-scroll */ 3597); - - - - - - - - - -let CustomTableModule = class CustomTableModule {}; -CustomTableModule = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_3__.CommonModule, _angular_material_paginator__WEBPACK_IMPORTED_MODULE_4__.MatPaginatorModule, _angular_material_table__WEBPACK_IMPORTED_MODULE_5__.MatTableModule, _angular_material_sort__WEBPACK_IMPORTED_MODULE_6__.MatSortModule, _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_7__.ScrollingModule, ng_table_virtual_scroll__WEBPACK_IMPORTED_MODULE_8__.TableVirtualScrollModule], - declarations: [_custom_table_component__WEBPACK_IMPORTED_MODULE_0__.CustomTableComponent], - exports: [_custom_table_component__WEBPACK_IMPORTED_MODULE_0__.CustomTableComponent] -})], CustomTableModule); - -/***/ }), - -/***/ 1764: -/*!********************************************************************************!*\ - !*** ./src/app/components/controls/flexible-chart/flexible-chart.component.ts ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ChartType: () => (/* binding */ ChartType), -/* harmony export */ FlexibleChartComponent: () => (/* binding */ FlexibleChartComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _flexible_chart_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./flexible-chart.component.html?ngResource */ 5937); -/* harmony import */ var _flexible_chart_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./flexible-chart.component.scss?ngResource */ 1395); -/* harmony import */ var _flexible_chart_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_flexible_chart_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @app/helper/functions */ 9978); - - - - - -var ChartType; -(function (ChartType) { - ChartType["LINE"] = "line"; - ChartType["BAR"] = "bar"; - ChartType["AREA"] = "area"; -})(ChartType || (ChartType = {})); -let FlexibleChartComponent = class FlexibleChartComponent { - set typeOfChart(val) { - this._typeOfChart = val; - // console.log({ val }); - this.redraw(); - } - get typeOfChart() { - return this._typeOfChart; - } - set data(val) { - this.exampleData = val; - this.redraw(); - } - constructor() { - this.exampleData = []; - this.globalMinMax = false; - this.mousePosition = { - inside: false, - mousedown: false, - x: 0, - y: 0 - }; - this.fullToolTip = false; - this.isRange = true; - this.startXAxisNumber = 0; - this.options = { - axisX: false, - axisY: false - }; - this._typeOfChart = ChartType.BAR; // line | area | bar - this.range = new _angular_core__WEBPACK_IMPORTED_MODULE_3__.EventEmitter(); - } - onResize() { - this.redraw(); - } - ngAfterViewInit() { - // this.redraw(); - } - eventCheckerCanvasSizeChanged() { - this.checkInterval = setInterval(() => { - const { - offsetWidth, - offsetHeight - } = this.canvas.nativeElement; - const _hash = (0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.hash)(`canvas-${offsetWidth}-${offsetHeight}`, 4); - if (_hash !== this.bufferOffsetChart) { - this.bufferOffsetChart = _hash; - // console.log('EMIT CHANGE', { offsetWidth, offsetHeight, _hash }); - this.redraw(); - } - }, 20); - } - ngOnInit() { - this.eventCheckerCanvasSizeChanged(); - } - mouseEvent(event) { - const { - layerX, - layerY - } = event; - // const { layerX = 0, layerY = 0 }:any = {}; - const { - offsetWidth, - offsetHeight, - offsetLeft, - offsetTop - } = this.canvas.nativeElement; - const dX = layerX - offsetLeft; - const dY = layerX - offsetTop; - switch (event.type) { - case 'mousemove': - this.mousePosition.x = layerX - offsetLeft; - this.mousePosition.y = layerY - offsetTop; - break; - case 'mousedown': - this.mousePosition.mousedown = true; - this.mousePosition.xDown = dX / offsetWidth; - this.mousePosition.yDown = layerY / offsetHeight; - this.mousePosition.xUp = null; - this.mousePosition.yUp = null; - this.mousePosition.inside = true; - break; - case 'mouseup': - this.mousePosition.inside = true; - this.mousePosition.xUp = dX / offsetWidth; - this.mousePosition.yUp = layerY / offsetHeight; - this.mousePosition.mousedown = false; - this.range.emit(this.сalcRangeByData()); - break; - case 'mouseout': - this.mousePosition.mousedown = false; - this.mousePosition.inside = false; - break; - case 'mouseover': - this.mousePosition.mousedown = false; - this.mousePosition.inside = true; - break; - case 'mouseoutside': - this.mousePosition.xUp = layerX / offsetWidth; - this.mousePosition.yUp = layerY / offsetHeight; - this.mousePosition.mousedown = false; - this.mousePosition.inside = false; - this.range.emit(this.сalcRangeByData()); - break; - } - this.redraw(); - } - update() { - this.redraw(); - } - сalcRangeByData() { - const pudding = { - x: 10, - y: 0 - }; // px - const [firstData] = this.exampleData || [{ - data: [] - }]; - if (!firstData?.data) { - return [0, 0]; - } - const data = this.formattedData(firstData.data); - const { - offsetWidth - } = this.canvas.nativeElement; - const stepX = (offsetWidth - pudding.x * 2) / data.length; - const from = Math.round((this.mousePosition.xDown * offsetWidth || this.mousePosition.x) / stepX); - const to = Math.round((this.mousePosition.xUp * offsetWidth || this.mousePosition.x) / stepX); - return [from, to]; - } - getIndexOfData() { - const pudding = { - x: 10, - y: 0 - }; // px - const [firstData] = this.exampleData; - if (!firstData?.data) { - return 0; - } - const data = this.formattedData(firstData.data); - const { - offsetWidth - } = this.canvas.nativeElement; - const stepX = (offsetWidth - pudding.x * 2) / data.length; - const index = Math.ceil(this.mousePosition.x / stepX); - return index; - } - tooltip(ctx, text, index = 0) { - const padding = 4; - ctx.font = `14px monospace`; - const textElement = ctx.measureText(text.split('\n')[0]); - const w = textElement.width; - const x = Math.max(0, Math.min(ctx.canvas.clientWidth - w - padding * 2, this.mousePosition.x - (w + padding) / 2)); - const y = 10; - ctx.fillStyle = 'rgba(255, 255, 255, 0.8)'; - ctx.fillStyle = 'black'; - text.split('\n').forEach((line, k) => { - this.drawText(ctx, line, { - x, - y: y + k * 20, - bgColor: 'rgba(255, 255, 255, 0.8)', - color: 'black' - }); - }); - } - drawText(ctx, text, { - x, - y, - bgColor, - color - }) { - const padding = 4; - const size = 14; - ctx.font = `${size}px monospace`; - const textElement = ctx.measureText(text); - const w = textElement.width; - const h = size; - ctx.fillStyle = bgColor; - ctx.fillRect(x, y, padding * 2 + w, padding * 2 + h); - ctx.textBaseline = "hanging"; - ctx.fillStyle = color; - ctx.fillText(text, x + padding, y + padding + 1); - } - formattedData(data = []) { - var out = []; - for (var i = 0; i < data.length; i++) { - out.push(data[i] || 0); - } - ; - // out; - return out; - } - setLineStyle(ctx) { - ctx.beginPath(); - ctx.fillStyle = '#fff'; - ctx.strokeStyle = '#fff'; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - ctx.lineWidth = 1; - } - draw(ctx) { - let minData = Number.MAX_VALUE, - maxData = Number.MIN_VALUE; - if (this.globalMinMax) { - this.exampleData.forEach(({ - data - }) => { - minData = Math.min(...data, minData, 0); - maxData = Math.max(...data, maxData); - }); - } - this.exampleData.forEach(({ - data, - color, - typeOfChart - }) => { - this.drawChart(ctx, data, color, typeOfChart, [minData, maxData]); - }); - if (this.isRange) { - this.drawRange(ctx); - if (this.mousePosition.inside) { - this.drawTarget(ctx); - if (this.fullToolTip) { - const idx = this.getIndexOfData() - 1; - console.log({ - exampleData: this.exampleData - }); - this.tooltip(ctx, this.exampleData.map(i => i.data[idx] ? `${i.name}: ${i.data[idx]}` : '').filter(i => !!i).join('\n')); - } else { - this.tooltip(ctx, JSON.stringify(!this.mousePosition.mousedown ? this.getIndexOfData() : this.сalcRangeByData())); - } - } - } - const [fItem] = this.exampleData || []; - if (this.options?.axisX && fItem?.data) { - this.drawAxisX(ctx, fItem.data); - } - if (this.options?.axisY && fItem?.data) { - this.drawAxisY(ctx, Object.keys(fItem.data)); - } - } - drawAxisY(ctx, data) { - const padding = { - x: 10, - y: this.options.axisY ? 40 : 0 - }; - const h = ctx.canvas.offsetHeight - padding.y; - this.setLineStyle(ctx); - ctx.strokeStyle = '#000'; - ctx.moveTo(padding.x, 0); - ctx.lineTo(padding.x, h); - ctx.stroke(); - const min = Math.min(...data, 0); - const max = Math.max(...data); - const L = Math.ceil(h / 20); - const step = h / L; - let x, y; - for (let i = 1; i <= L; i++) { - x = padding.x + 10; - y = i * step; - ctx.moveTo(padding.x, y); - ctx.lineTo(padding.x + 5, y); - ctx.stroke(); - this.drawText(ctx, `${((max - min) * (L - i) / L).toFixed(2)}`, { - x: padding.x + 5, - y: y - 12, - bgColor: 'rgba(255, 255, 255, 0)', - color: 'black' - }); - } - // ctx.stroke(); - } - - drawAxisX(ctx, data) { - const padding = { - x: 10, - y: 40 - }; - const w = ctx.canvas.offsetWidth - padding.x * 2; - const h = ctx.canvas.offsetHeight; - this.setLineStyle(ctx); - ctx.strokeStyle = '#000'; - ctx.moveTo(padding.x, h - padding.y); - ctx.lineTo(padding.x + w, h - padding.y); - ctx.stroke(); - const min = Math.min(...data, 0); - const max = Math.max(...data); - const L = Math.min(data.length, Math.ceil(w / 40)); - const step = w / L; - let x, y; - for (let i = 0; i < L; i++) { - x = padding.x + i * step + step / 2; - y = h - padding.y + 5; - ctx.moveTo(x, y - 5); - ctx.lineTo(x, y + 3); - ctx.stroke(); - this.drawText(ctx, `${(this.startXAxisNumber + data.length * (i + 1) / L).toFixed(0)}`, { - x: x - 10, - y: y, - bgColor: 'rgba(255, 255, 255, 0)', - color: 'black' - }); - } - } - drawRange(ctx) { - const { - offsetWidth - } = ctx.canvas; - if (this.mousePosition.xDown) { - const k = this.mousePosition.xUp && offsetWidth || 1; - const [a, b] = [this.mousePosition.xDown * offsetWidth, (this.mousePosition.xUp || this.mousePosition.x) * k]; - const startX = Math.max(a, b); - const endX = Math.min(a, b); - ctx.fillStyle = 'rgba(128,255,128,0.5)'; - ctx.strokeStyle = 'rgba(255, 255, 255, 0.8)'; - ctx.fillRect(startX, 0, endX - startX, ctx.canvas.height); - ctx.stroke(); - } - } - drawChart(ctx, data, color = 'rgba(0,255,255,0.5)', type = this.typeOfChart, [min, max]) { - data = _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.Functions.cloneObject(data); - const pudding = { - x: 10, - y: this.options.axisX ? 40 : 0 - }; // px - let minY; - let maxY; - if (this.globalMinMax) { - minY = min; - maxY = max; - } else { - minY = Math.min(...data, 0); - maxY = Math.max(...data); - } - let stepX = (ctx.canvas.offsetWidth - pudding.x * 2) / data.length; - const stepY = (ctx.canvas.offsetHeight - pudding.y * 2) / maxY; - let x, y, w, h; - ctx.globalAlpha = 0.5; - this.setLineStyle(ctx); - ctx.fillStyle = color; - switch (type) { - case ChartType.LINE: - case ChartType.AREA: - stepX = (ctx.canvas.offsetWidth - pudding.x * 2) / (data.length - 1); - for (let i = 0; data.length; i += stepX) { - y = pudding.y + (minY + maxY - data.shift()) * stepY; - x = pudding.x + i; - if (i === 0) { - ctx.moveTo(x, ctx.canvas.offsetHeight - pudding.y); - ctx.lineTo(x, y); - } else { - ctx.lineTo(x, y); - } - } - ctx.lineTo(x, ctx.canvas.offsetHeight - pudding.y); - if (type === ChartType.AREA) { - ctx.fill(); - } - ctx.globalAlpha = 1; - ctx.strokeStyle = color; - ctx.stroke(); - break; - case ChartType.BAR: - ctx.fillStyle = color; - for (let i = 0; data.length; i += stepX) { - y = pudding.y + (minY + maxY - data.shift()) * stepY; - x = pudding.x + i + stepX / 10; - w = stepX * 8 / 10; - h = ctx.canvas.offsetHeight - pudding.y - y; - ctx.fillRect(x, y, w, h); - } - break; - } - ctx.stroke(); - ctx.globalAlpha = 1; - } - drawTarget(ctx) { - this.setLineStyle(ctx); - ctx.strokeStyle = 'rgba(255, 255, 255, 0.8)'; - // vertical - ctx.moveTo(this.mousePosition.x, 0); - ctx.lineTo(this.mousePosition.x, ctx.canvas.height); - // horizontal - // ctx.moveTo(0, this.mousePosition.y); - // ctx.lineTo(ctx.canvas.width, this.mousePosition.y); - ctx.stroke(); - } - redraw() { - if (!this.canvas?.nativeElement) { - return; - } - const c = this.canvas.nativeElement; - c.width = `${c.offsetWidth}`; - c.height = `${c.offsetHeight - 5}`; - if (c.getContext) { - var ctx = c.getContext('2d'); - this.draw(ctx); - } - // requestAnimationFrame(this.redraw.bind(this)); - } - - ngOnDestroy() { - if (this.checkInterval) { - clearInterval(this.checkInterval); - } - } - static #_ = this.ctorParameters = () => []; - static #_2 = this.propDecorators = { - globalMinMax: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - fullToolTip: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - isRange: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - startXAxisNumber: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - options: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - typeOfChart: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - range: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Output - }], - canvas: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.ViewChild, - args: ['canvas', { - static: true - }] - }], - onResize: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.HostListener, - args: ['window:resize'] - }] - }; -}; -FlexibleChartComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Component)({ - selector: 'flexible-chart', - template: _flexible_chart_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - styles: [(_flexible_chart_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], FlexibleChartComponent); - -/***/ }), - -/***/ 6821: -/*!*****************************************************************************!*\ - !*** ./src/app/components/controls/flexible-chart/flexible-chart.module.ts ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ FlexibleChartModule: () => (/* binding */ FlexibleChartModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _flexible_chart_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./flexible-chart.component */ 1764); - - - - -let FlexibleChartModule = class FlexibleChartModule {}; -FlexibleChartModule = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_3__.CommonModule], - declarations: [_flexible_chart_component__WEBPACK_IMPORTED_MODULE_0__.FlexibleChartComponent], - exports: [_flexible_chart_component__WEBPACK_IMPORTED_MODULE_0__.FlexibleChartComponent] -})], FlexibleChartModule); - -/***/ }), - -/***/ 7120: -/*!**********************************************************************!*\ - !*** ./src/app/components/controls/frame-hex/frame-hex.component.ts ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ FrameHexComponent: () => (/* binding */ FrameHexComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _frame_hex_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./frame-hex.component.html?ngResource */ 5437); -/* harmony import */ var _frame_hex_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./frame-hex.component.scss?ngResource */ 2996); -/* harmony import */ var _frame_hex_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_frame_hex_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _app_services_hightlight_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @app/services/hightlight.service */ 1820); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); - - - - - -let FrameHexComponent = class FrameHexComponent { - set b64data(val) { - if (val) { - this.binaryCode = this.toHexArray(this.decodeBase64(val), 8); - this.hexCode = this.toHexArray(this.decodeBase64(val), 16); - this.cdr.detectChanges(); - } - } - constructor(cdr, highlightService) { - this.cdr = cdr; - this.highlightService = highlightService; - this.selectedFrom = 0; - this.selectedTo = 0; - this.binaryCode = []; - this.hexCode = []; - this.scrollStart = false; - this.onSelectedHex = new _angular_core__WEBPACK_IMPORTED_MODULE_3__.EventEmitter(); - } - decodeBase64(b64String) { - return atob(b64String); - } - toHexArray(str, rowLength = 16) { - return str.split('').reduce((a, b, k) => { - const key = Math.floor(k / rowLength); - if (!a[key]) { - a[key] = []; - } - const hex = b.charCodeAt(0).toString(16); - a[key].push(hex.length === 1 ? '0' + hex : hex); - return a; - }, []); - } - indexColumnValue(n, rowLength = 16) { - const m = n * rowLength; - const k = m.toString(16); - return Array.from({ - length: 4 - k.length - }, x => '0').join('') + k; - } - hexToBinary(strHex) { - const b = parseInt(strHex, 16).toString(2); - return Array.from({ - length: 8 - b.length - }, x => '0').join('') + b; - } - toTextPre(hexCode) { - return hexCode.map(i => { - return i.map(c => { - return this.toCharFromHex(c, true); - }).join(''); - }).join(''); - } - toCharFromHex(strHex, nonSpecialChar = false) { - const rxSymbols = /[^-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/\w]/g; - if (strHex == '0d') return '\r'; - if (strHex == '0a') return '\n'; - if (nonSpecialChar) { - return String.fromCharCode(parseInt(strHex, 16)); - } - return String.fromCharCode(parseInt(strHex, 16)).replace(rxSymbols, '.'); - } - isSelected(rowId, colId, mode) { - const index = (mode.value === 'HEX' ? 16 : 8) * rowId + colId; - const out = this.selectedFrom <= index && this.selectedTo > index; - if (out && this.scrollStart) { - this.scrollStart = false; - const el = document.getElementById('row-' + rowId); - el?.scrollIntoView({ - block: "center", - behavior: "smooth" - }); - } - return out; - } - onClick(rowId, colId, mode) { - const index = (mode.value === 'HEX' ? 16 : 8) * rowId + colId; - this.onSelectedHex.emit(index); - } - ngOnInit() { - this.highlightService.listener.subscribe(data => { - const [from, to] = data || [0, 0]; - this.selectedFrom = from; - this.selectedTo = from + to; - this.scrollStart = true; - this.cdr.detectChanges(); - }); - } - static #_ = this.ctorParameters = () => [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.ChangeDetectorRef - }, { - type: _app_services_hightlight_service__WEBPACK_IMPORTED_MODULE_2__.HighlightService - }]; - static #_2 = this.propDecorators = { - b64data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input - }], - onSelectedHex: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Output - }] - }; -}; -FrameHexComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Component)({ - selector: 'app-frame-hex', - template: _frame_hex_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_3__.ChangeDetectionStrategy.OnPush, - styles: [(_frame_hex_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], FrameHexComponent); - -/***/ }), - -/***/ 2746: -/*!*******************************************************************!*\ - !*** ./src/app/components/controls/frame-hex/frame-hex.module.ts ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ FrameHexModule: () => (/* binding */ FrameHexModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_material_divider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/divider */ 9400); -/* harmony import */ var _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/material/button-toggle */ 727); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _frame_hex_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./frame-hex.component */ 7120); - - - - - - -let FrameHexModule = class FrameHexModule {}; -FrameHexModule = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_3__.CommonModule, _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_4__.MatButtonToggleModule, _angular_material_divider__WEBPACK_IMPORTED_MODULE_5__.MatDividerModule], - declarations: [_frame_hex_component__WEBPACK_IMPORTED_MODULE_0__.FrameHexComponent], - exports: [_frame_hex_component__WEBPACK_IMPORTED_MODULE_0__.FrameHexComponent] -})], FrameHexModule); - -/***/ }), - -/***/ 1879: -/*!**********************************************************************!*\ - !*** ./src/app/components/controls/menu-stat/menu-stat.component.ts ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MenuStatComponent: () => (/* binding */ MenuStatComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _menu_stat_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./menu-stat.component.html?ngResource */ 7584); -/* harmony import */ var _menu_stat_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./menu-stat.component.scss?ngResource */ 7202); -/* harmony import */ var _menu_stat_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_menu_stat_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _modal_resizable_modal_resizable_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modal-resizable/modal-resizable.service */ 8835); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - -let MenuStatComponent = class MenuStatComponent { - constructor(webSharkDataService, modalResizableService, cdr) { - this.webSharkDataService = webSharkDataService; - this.modalResizableService = modalResizableService; - this.cdr = cdr; - } - ngOnInit() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const d = yield _this.initMenu(); - })(); - } - onMenuClick(link) { - this.modalResizableService.open({ - link - }); - this.cdr.detectChanges(); - } - initMenu() { - var _this2 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - try { - _this2.menuTreeIndex = []; - // console.log('MENU:ngOnInit()') - const info = yield _this2.webSharkDataService.getInfo(); - const { - stats = [], - nstat = [], - convs = [], - seqa = [], - taps = [], - eo = [], - srt = [], - rtd = [] - } = info; - const menuCollection = [{ - name: 'Endpoints', - children: [...convs] - }, { - name: 'Response Time', - children: [...srt, ...rtd] - }, { - name: 'Statistics', - children: [...stats, ...nstat] - }, { - name: 'Export Objects', - children: [...eo] - }, { - name: 'Misc', - children: [{ - name: 'RTP Rteams', - type: 'rtp-streams', - jsonData: {} - }, { - name: 'Flow', - type: 'flow', - jsonData: {} - }] - }]; - _this2.menuTree = menuCollection; - // console.log('menu', { menuCollection, menuTree: this.menuTree }); - _this2.cdr.detectChanges(); - } catch (err) { - _this2.menuTree = []; - console.error(err); - } - })(); - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_4__.WiregasmService - }, { - type: _modal_resizable_modal_resizable_service__WEBPACK_IMPORTED_MODULE_3__.ModalResizableService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectorRef - }]; -}; -MenuStatComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({ - selector: 'app-menu-stat', - template: _menu_stat_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - styles: [(_menu_stat_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], MenuStatComponent); - -/***/ }), - -/***/ 6477: -/*!********************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/message-details.service.ts ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ArrowEventState: () => (/* binding */ ArrowEventState), -/* harmony export */ MessageDetailsService: () => (/* binding */ MessageDetailsService) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 2513); -var MessageDetailsService_1; - - - - -var ArrowEventState; -(function (ArrowEventState) { - ArrowEventState["PREVIOUS"] = "previous"; - ArrowEventState["FOLLOWING"] = "following"; -})(ArrowEventState || (ArrowEventState = {})); -let MessageDetailsService = class MessageDetailsService { - static #_ = MessageDetailsService_1 = this; - static #_2 = this.parentWindow = {}; - constructor() { - this.subject = new rxjs__WEBPACK_IMPORTED_MODULE_1__.Subject(); - this.subjectArrows = new rxjs__WEBPACK_IMPORTED_MODULE_1__.Subject(); - } - get event() { - return this.subject.asObservable(); - } - get arrows() { - return this.subjectArrows.asObservable(); - } - setParentWindowData(indexWindow, data = null) { - const hash = _app_helper_functions__WEBPACK_IMPORTED_MODULE_0__.Functions.md5(indexWindow); - MessageDetailsService_1.parentWindow[hash] = data; - } - getParentWindowData(indexWindow) { - const hash = _app_helper_functions__WEBPACK_IMPORTED_MODULE_0__.Functions.md5(indexWindow); - const p = MessageDetailsService_1.parentWindow; - return p && p[hash] || { - isBrowserWindow: false - }; - } - open(message, metadata) { - this.subject.next({ - message, - metadata - }); - } - clickArrowRight(metadata) { - this.subjectArrows.next({ - eventType: ArrowEventState.FOLLOWING, - metadata - }); - } - clickArrowLeft(metadata) { - this.subjectArrows.next({ - eventType: ArrowEventState.PREVIOUS, - metadata - }); - } - static #_3 = this.ctorParameters = () => []; -}; -MessageDetailsService = MessageDetailsService_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Injectable)({ - providedIn: 'root' -})], MessageDetailsService); - -/***/ }), - -/***/ 1845: -/*!**********************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/modal-resizable.component.ts ***! - \**********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ModalResizableComponent: () => (/* binding */ ModalResizableComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _modal_resizable_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modal-resizable.component.html?ngResource */ 8516); -/* harmony import */ var _modal_resizable_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modal-resizable.component.scss?ngResource */ 6667); -/* harmony import */ var _modal_resizable_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_modal_resizable_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _message_details_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./message-details.service */ 6477); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -var ModalResizableComponent_1; - - - - - - -let ModalResizableComponent = class ModalResizableComponent { - static #_ = ModalResizableComponent_1 = this; - static #_2 = this.ZIndex = 12; - set isNonWindow(bool) { - this._isNonWindow = bool; - } - get isNonWindow() { - return this._isNonWindow; - } - set arrowMetaData(val) { - this._arrowMetaData = val; - } - get arrowMetaData() { - return this._arrowMetaData; - } - constructor(messageDetailsService, cdr) { - this.messageDetailsService = messageDetailsService; - this.cdr = cdr; - this._arrowMetaData = null; - this._noLayout = false; - this._isNonWindow = false; - this.sharedUrl = ''; - this.title = ''; - this.headerColor = ''; - this.width = document.body.offsetWidth * 0.9 || 1200; - this.height = document.body.offsetHeight * 0.9 || 900; - this.minWidth = 200; - this.minHeight = 200; - this.mouseEventData = null; - this.isBrowserWindow = false; - this.startZIndex = 0; - this.isOutsideButton = false; - this.close = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.EventEmitter(); - this.browserWindow = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.EventEmitter(); - this.__isBrowserWindow = false; - this.isFullPage = false; - this.cdr.detach(); - } - ngOnInit() { - this.cdr.detectChanges(); - setInterval(() => { - _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.emitWindowResize(); - this.cdr.detectChanges(); - }, 500); - } - onFullPage() { - this.isFullPage = !this.isFullPage; - setTimeout(() => { - _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.emitWindowResize(); - this.cdr.detectChanges(); - }, 35); - } - onKeydownHandler(event) { - event.preventDefault(); - event.stopPropagation(); - this.onClose(); - } - ngAfterViewInit() { - /* attache window to native document.body */ - document.body.appendChild(this.layerZIndex.nativeElement); - const { - min, - max, - ceil - } = Math; - /* calculation max windows size */ - const maxWidth = window.innerWidth * 0.95; - const maxHeight = window.innerHeight * 0.8; - this.minWidth = ceil(min(this.minWidth, maxWidth)); - this.minHeight = ceil(min(this.minHeight, maxHeight)); - (s => { - s.minWidth = ceil(min(maxWidth, max(this.minWidth, this.width))) + 'px'; - s.minHeight = ceil(min(maxHeight, max(this.minHeight, this.height))) + 'px'; - })(this.containerWindow.nativeElement.style); - if (this.mouseEventData) { - const mouseOffset = 50; // 50px inside window - this.setPositionWindow({ - x: ceil(this.mouseEventData.clientX - mouseOffset), - y: ceil(this.mouseEventData.clientY - mouseOffset) - }); - this.mouseEventData.focus = () => this.onFocus(); - } - this.onFocus(); - if (this.isBrowserWindow) { - this.newWindow(); - } - } - setPositionWindow({ - x = 0, - y = 0 - }) { - const { - min, - ceil - } = Math; - const el = this.containerWindow.nativeElement; - const positionLocal = this.getTranslatePosition(el); - const positionGlobal = el.getBoundingClientRect(); - x = ceil(min(window.innerWidth - positionGlobal.width, x)); - y = ceil(min(window.innerHeight - positionGlobal.height, y)); - positionLocal.x -= positionGlobal.left; - positionLocal.y -= positionGlobal.top; - positionLocal.x = ceil(positionLocal.x + x); - positionLocal.y = ceil(positionLocal.y + y); - el.style.transform = `translate3d(${positionLocal.x}px, ${positionLocal.y}px, 0px)`; - } - onClose() { - this.close.emit(); - } - onFocus() { - this.layerZIndex.nativeElement.style.zIndex = '' + ((ModalResizableComponent_1.ZIndex += 2) + this.startZIndex); - } - onResize(event, controlName) { - const { - min, - ceil - } = Math; - this._noLayout = false; - this.setMouseLayer(true); - const x0 = ceil(event.clientX); - const y0 = ceil(event.clientY); - const winWidth = ceil(this.containerWindow.nativeElement.offsetWidth); - const winHeight = ceil(this.containerWindow.nativeElement.offsetHeight); - const winPosition = this.getTranslatePosition(this.containerWindow.nativeElement); - this.containerWindow.nativeElement.classList.add('animation-off'); - const vector = { - left: { - h: -1, - v: 0 - }, - right: { - h: 1, - v: 0 - }, - bottom: { - h: 0, - v: 1 - }, - top: { - h: 0, - v: -1 - }, - tl: { - h: -1, - v: -1 - }, - tr: { - h: 1, - v: -1 - }, - bl: { - h: -1, - v: 1 - }, - br: { - h: 1, - v: 1 - } - }; - const size = { - w: 0, - h: 0 - }, - vh = vector[controlName].h, - vv = vector[controlName].v, - position = { - x: winPosition.x, - y: winPosition.y - }; - // window.document.body.classList.add('no-selected-text'); - window.document.body.onmousemove = evt => { - if (vh !== 0) { - const cX = ceil(Math[vh > 0 ? 'max' : 'min'](x0 + vh * (this.minWidth - winWidth), evt.clientX)); - size.w = ceil(winWidth + vh * (cX - x0)); - position.x = ceil(winPosition.x + (cX - x0) / 2); - this.containerWindow.nativeElement.style.minWidth = size.w + 'px'; - } - if (vv !== 0) { - const cY = ceil(Math[vv > 0 ? 'max' : 'min'](y0 + vv * (this.minHeight - winHeight), evt.clientY)); - size.h = ceil(winHeight + vv * (cY - y0)); - position.y = ceil(winPosition.y + (cY - y0) / 2); - this.containerWindow.nativeElement.style.minHeight = size.h + 'px'; - } - this.containerWindow.nativeElement.style.transform = `translate3d(${position.x}px, ${position.y}px, 0px)`; - _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.emitWindowResize(); - }; - window.document.body.onmouseleave = window.document.body.onmouseup = () => { - this.containerWindow.nativeElement.classList.remove('animation-off'); - this.setMouseLayer(false); - _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.emitWindowResize(); - window.document.body.onmouseleave = null; - window.document.body.onmousemove = null; - window.document.body.onmouseup = null; - }; - } - afterResize() { - this._noLayout = true; - _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.emitWindowResize(); - } - getTranslatePosition(el) { - const { - ceil - } = Math; - const style = window.getComputedStyle(el); - const matrix = new WebKitCSSMatrix(style['webkitTransform']); - return { - x: ceil(matrix.m41), - y: ceil(matrix.m42) - }; - } - onStartMove(event) { - const { - max, - ceil - } = Math; - const x0 = ceil(event.clientX); - const y0 = ceil(event.clientY); - const winPosition = this.getTranslatePosition(this.containerWindow.nativeElement); - winPosition.h = ceil(this.containerWindow.nativeElement.offsetHeight); - const documentHeigth = ceil(document.body.offsetHeight); - const top0px = ceil((documentHeigth - winPosition.h) / -2); - this.containerWindow.nativeElement.classList.add('animation-off'); - this.layerZIndex.nativeElement.classList.add('active'); - window.document.body.onmousemove = evt => { - this.setMouseLayer(true); - const xMove = ceil(winPosition.x + (evt.clientX - x0)); - const yMove = ceil(Math.max(top0px, winPosition.y + (evt.clientY - y0))); - this.containerWindow.nativeElement.style.transform = `translate3d(${xMove}px, ${yMove}px, 0px)`; - }; - window.document.body.onmouseleave = window.document.body.onmouseup = () => { - this.containerWindow.nativeElement.classList.remove('animation-off'); - this.layerZIndex.nativeElement.classList.remove('active'); - this.setMouseLayer(false); - window.document.body.onmouseleave = null; - window.document.body.onmousemove = null; - window.document.body.onmouseup = null; - }; - } - onWindowClose(event) { - this._content.appendChild(this.inWindow.nativeElement); - this.browserWindow.emit(false); - this.onClose(); - } - setMouseLayer(bool = true) { - let _layer = document.querySelector('.mouse-layer'); - if (!_layer) { - _layer = document.createElement('div'); - _layer.classList.add('mouse-layer'); - document.body.appendChild(_layer); - } - _layer.style.display = bool && !this._noLayout ? 'block' : 'none'; - } - newWindow() { - this.__isBrowserWindow = true; - this._content = this.inWindow.nativeElement.parentElement; - this.outWindow.nativeElement.appendChild(this.inWindow.nativeElement); - this.layerZIndex.nativeElement.style.display = 'none'; - this.browserWindow.emit(this.__isBrowserWindow); - this.cdr.detectChanges(); - } - clickArrowLeft(event = null) { - event.stopPropagation(); - this.messageDetailsService.clickArrowLeft({ - data: this.arrowMetaData, - mouseEventData: event - }); - } - clickArrowRight(event = null) { - event.stopPropagation(); - this.messageDetailsService.clickArrowRight({ - data: this.arrowMetaData, - mouseEventData: event - }); - } - ngOnDestroy() { - document.body.removeChild(this.layerZIndex.nativeElement); - } - onWheel(event) { - return; - } - static #_3 = this.ctorParameters = () => [{ - type: _message_details_service__WEBPACK_IMPORTED_MODULE_2__.MessageDetailsService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectorRef - }]; - static #_4 = this.propDecorators = { - layerZIndex: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: ['layerZIndex', { - static: false - }] - }], - containerWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: ['containerWindow', { - static: false - }] - }], - inWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: ['inWindow', { - static: false - }] - }], - outWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: ['outWindow', { - static: false - }] - }], - isNonWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - sharedUrl: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - objectData: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - title: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - headerColor: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - width: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - height: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - minWidth: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - minHeight: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - mouseEventData: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - isBrowserWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - startZIndex: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - isOutsideButton: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - arrowMetaData: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - close: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Output - }], - browserWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Output - }], - onKeydownHandler: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.HostListener, - args: ['document:keydown.escape', ['$event']] - }] - }; -}; -ModalResizableComponent = ModalResizableComponent_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({ - selector: 'modal-resizable', - template: _modal_resizable_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectionStrategy.OnPush, - styles: [(_modal_resizable_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], ModalResizableComponent); - -/***/ }), - -/***/ 4554: -/*!*******************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/modal-resizable.module.ts ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ModalResizableModule: () => (/* binding */ ModalResizableModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _window_window_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./window/window.component */ 2332); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _modal_resizable_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modal-resizable.component */ 1845); -/* harmony import */ var _angular_material_toolbar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/material/toolbar */ 2484); -/* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/material/button */ 895); -/* harmony import */ var _angular_material_icon__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/material/icon */ 6515); -/* harmony import */ var _angular_cdk_portal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/cdk/portal */ 3517); -/* harmony import */ var _fortawesome_angular_fontawesome__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/angular-fontawesome */ 683); -/* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/free-solid-svg-icons */ 9985); -/* harmony import */ var _fortawesome_free_brands_svg_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/free-brands-svg-icons */ 7991); -/* harmony import */ var _fortawesome_free_regular_svg_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/free-regular-svg-icons */ 8495); - - - - - - - - - - - - - -let ModalResizableModule = class ModalResizableModule { - constructor(library) { - library.addIconPacks(_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_2__.fas, _fortawesome_free_brands_svg_icons__WEBPACK_IMPORTED_MODULE_3__.fab, _fortawesome_free_regular_svg_icons__WEBPACK_IMPORTED_MODULE_4__.far); - } - static #_ = this.ctorParameters = () => [{ - type: _fortawesome_angular_fontawesome__WEBPACK_IMPORTED_MODULE_5__.FaIconLibrary - }]; -}; -ModalResizableModule = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_8__.CommonModule, _fortawesome_angular_fontawesome__WEBPACK_IMPORTED_MODULE_5__.FontAwesomeModule, _angular_material_toolbar__WEBPACK_IMPORTED_MODULE_9__.MatToolbarModule, _angular_material_button__WEBPACK_IMPORTED_MODULE_10__.MatButtonModule, _angular_material_icon__WEBPACK_IMPORTED_MODULE_11__.MatIconModule, _angular_cdk_portal__WEBPACK_IMPORTED_MODULE_12__.PortalModule], - declarations: [_modal_resizable_component__WEBPACK_IMPORTED_MODULE_1__.ModalResizableComponent, _window_window_component__WEBPACK_IMPORTED_MODULE_0__.WindowComponent], - exports: [_modal_resizable_component__WEBPACK_IMPORTED_MODULE_1__.ModalResizableComponent], - schemas: [_angular_core__WEBPACK_IMPORTED_MODULE_7__.CUSTOM_ELEMENTS_SCHEMA] -})], ModalResizableModule); - -/***/ }), - -/***/ 8835: -/*!********************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/modal-resizable.service.ts ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ModalResizableService: () => (/* binding */ ModalResizableService) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ 2513); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); - - - -let ModalResizableService = class ModalResizableService { - constructor() { - this.subject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject(); - } - get event() { - return this.subject.asObservable(); - } - open(data = null) { - this.subject.next({ - open: true, - data - }); - } -}; -ModalResizableService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({ - providedIn: 'root' -})], ModalResizableService); - -/***/ }), - -/***/ 2332: -/*!********************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/window/window.component.ts ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WindowComponent: () => (/* binding */ WindowComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _window_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./window.component.html?ngResource */ 5340); -/* harmony import */ var _window_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window.service */ 1616); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); - - - - -let WindowComponent = class WindowComponent { - get isWindow() { - return this._isWindow; - } - set isWindow(val) { - this._isWindow = val; - if (this._isWindow) { - this.setWindow(); - } - } - constructor(windowService) { - this.windowService = windowService; - this.width = 700; - this.height = 600; - this.minWidth = 300; - this.minHeight = 300; - this.sharedUrl = ''; - this._isWindow = false; - this.close = new _angular_core__WEBPACK_IMPORTED_MODULE_2__.EventEmitter(); - this.externalWindow = null; - } - ngOnInit() { - if (this._isWindow) { - this.setWindow(); - } - } - openWindow() { - const left = (screen.width - this.width) / 2; - const top = (screen.height - this.height) / 4; - return window.open(this.sharedUrl || '', '', `toolbar=no, - location=no, - directories=no, - status=no, - menubar=no, - scrollbars=no, - resizable=no, - copyhistory=no, - width=${this.width}, - height=${this.height}, - top=${top}, - left=${left}`); - } - setWindow() { - this.externalWindow = this.openWindow(); - try { - this.externalWindow.onbeforeunload = evt => { - this._isWindow = false; - this.close.emit(evt); - }; - } catch (e) { - this._isWindow = false; - this.close.emit(e); - } - if (this.sharedUrl) { - this.externalWindow['objectData'] = this.objectData; - return; - } - const doc = this.externalWindow.document; - doc.head.innerHTML = window.document.head.innerHTML; - doc.body.appendChild(this.content.nativeElement); //.cloneNode(true); - doc.body.id = `win-id-${Math.random()}`; - // add scripts from base project - Array.from(window.document.body.getElementsByTagName('script')).forEach(s => { - doc.body.appendChild(s); - }); - /** - * add styles - */ - doc.head.appendChild(this.getStyleSheetElement()); - this.resetStyles(doc); - const getStyleBuffer = () => Array.from(document.querySelectorAll('style')).map(i => i.innerHTML).join(''); - let styleBuffer = getStyleBuffer(); - doc.body.addEventListener('mousemove', evt => { - this.windowService.setMousePosition(evt); - }); - /** - * realtime watcher for styling changes - */ - this.watcherInterval = setInterval(() => { - if (styleBuffer !== getStyleBuffer()) { - this.resetStyles(doc); - styleBuffer = getStyleBuffer(); - } - }, 50); - } - getStyleSheetElement() { - const styleSheetElement = document.createElement('link'); - document.querySelectorAll('link').forEach(htmlElement => { - if (htmlElement.rel === 'stylesheet') { - const absoluteUrl = new URL(htmlElement.href).href; - styleSheetElement.rel = 'stylesheet'; - styleSheetElement.href = absoluteUrl; - } - }); - return styleSheetElement; - } - resetStyles(doc) { - // clear old styles - doc.querySelectorAll('style').forEach(el => { - var parent = el.parentElement; - parent.removeChild(el); - }); - // Copy styles from parent window - document.querySelectorAll('style').forEach(htmlElement => { - doc.head.appendChild(htmlElement.cloneNode(true)); - }); - } - ngOnDestroy() { - if (this.externalWindow) { - this.externalWindow.close(); - } - if (this.watcherInterval) { - clearInterval(this.watcherInterval); - } - } - static #_ = this.ctorParameters = () => [{ - type: _window_service__WEBPACK_IMPORTED_MODULE_1__.WindowService - }]; - static #_2 = this.propDecorators = { - content: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.ViewChild, - args: ['content', { - static: false - }] - }], - width: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - height: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - minWidth: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - minHeight: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - sharedUrl: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - objectData: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - isWindow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }], - close: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Output - }] - }; -}; -WindowComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Component)({ - selector: 'app-window', - template: _window_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_2__.ChangeDetectionStrategy.OnPush -})], WindowComponent); - -/***/ }), - -/***/ 1616: -/*!******************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/window/window.service.ts ***! - \******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WindowService: () => (/* binding */ WindowService) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ 8071); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); - - - -let WindowService = class WindowService { - constructor() { - this.subject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject({}); - } - get listen() { - return this.subject.asObservable(); - } - setMousePosition(evt) { - this.subject.next(evt); - } - static #_ = this.ctorParameters = () => []; -}; -WindowService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({ - providedIn: 'root' -})], WindowService); - -/***/ }), - -/***/ 877: -/*!******************************************************************!*\ - !*** ./src/app/components/controls/no-data/no-data.component.ts ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ NoDataComponent: () => (/* binding */ NoDataComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _no_data_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./no-data.component.scss?ngResource */ 1767); -/* harmony import */ var _no_data_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_no_data_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 1699); - - - -let NoDataComponent = class NoDataComponent { - constructor() { - this.noDataIf = false; - this.inProgress = false; - } - static #_ = this.propDecorators = { - noDataIf: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_1__.Input - }], - inProgress: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_1__.Input - }] - }; -}; -NoDataComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component)({ - selector: 'isData', - template: ` -
-

-
- -

No Data

- -
`, - styles: [(_no_data_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_0___default())] -})], NoDataComponent); - -/***/ }), - -/***/ 5284: -/*!***************************************************************!*\ - !*** ./src/app/components/controls/no-data/no-data.module.ts ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ NoDataModule: () => (/* binding */ NoDataModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _no_data_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./no-data.component */ 877); - - - - -let NoDataModule = class NoDataModule {}; -NoDataModule = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_3__.CommonModule], - declarations: [_no_data_component__WEBPACK_IMPORTED_MODULE_0__.NoDataComponent], - exports: [_no_data_component__WEBPACK_IMPORTED_MODULE_0__.NoDataComponent] -})], NoDataModule); - -/***/ }), - -/***/ 7048: -/*!******************************************************************************!*\ - !*** ./src/app/components/controls/pcap-uploader/pcap-uploader.component.ts ***! - \******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PcapUploaderComponent: () => (/* binding */ PcapUploaderComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _pcap_uploader_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pcap-uploader.component.html?ngResource */ 5); -/* harmony import */ var _pcap_uploader_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pcap-uploader.component.scss?ngResource */ 3874); -/* harmony import */ var _pcap_uploader_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_pcap_uploader_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _alert_alert_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../alert/alert.service */ 611); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - -let PcapUploaderComponent = class PcapUploaderComponent { - constructor(webSharkDataService, cdr, alertService) { - this.webSharkDataService = webSharkDataService; - this.cdr = cdr; - this.alertService = alertService; - this.idDrugOver = false; - this.filename = ''; - this.filesize = ''; - this.inProgress = false; - this.isDataTimeNow = false; - this.autoUpload = false; - this.changeSettings = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.EventEmitter(); - } - ngAfterViewInit() { - const hsp = e => { - this.idDrugOver = e.type === 'dragover'; - e.preventDefault(); - e.stopPropagation(); - }; - const handlerDrop = e => { - hsp(e); - Array.from(e.dataTransfer.files).forEach(this.handlerUpload.bind(this)); - }; - Object.entries({ - submit: hsp, - drag: hsp, - dragstart: hsp, - dragend: hsp, - dragover: hsp, - dragenter: hsp, - dragleave: hsp, - drop: handlerDrop, - change: e => this.handlerUpload(e.target.files[0]) - }).forEach(([key, listener]) => { - this.fileSelect.nativeElement.addEventListener(key, listener); - }); - } - handlerUpload(file) { - this.filename = file.name; - this.filesize = (file.size / 1024).toFixed(2); - this.fileToUpload = file; - if (this.autoUpload) { - requestAnimationFrame(() => { - this.cdr.detectChanges(); - this.onSubmit(); - }); - } - this.cdr.detectChanges(); - } - onSubmit() { - this.inProgress = true; - this.webSharkDataService.postFile(this.fileToUpload, this.isDataTimeNow).subscribe(data => { - this.inProgress = false; - this.alertService.success('File was uploaded successfully'); - this.filename = ''; - this.cdr.detectChanges(); - }, error => { - console.log(error); - }); - } - openDialog() {} - ngOnInit() {} - ngOnDestroy() {} - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_3__.WiregasmService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectorRef - }, { - type: _alert_alert_service__WEBPACK_IMPORTED_MODULE_2__.AlertService - }]; - static #_2 = this.propDecorators = { - autoUpload: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }], - changeSettings: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Output - }], - fileSelect: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ViewChild, - args: ['fileSelect', { - static: true - }] - }] - }; -}; -PcapUploaderComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({ - selector: 'pcap-uploader', - template: _pcap_uploader_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - styles: [(_pcap_uploader_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], PcapUploaderComponent); - -/***/ }), - -/***/ 6942: -/*!***************************************************************************!*\ - !*** ./src/app/components/controls/pcap-uploader/pcap-uploader.module.ts ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ PcapUploaderModule: () => (/* binding */ PcapUploaderModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _pcap_uploader_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pcap-uploader.component */ 7048); -/* harmony import */ var _app_app_material_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @app/app.material-module */ 6675); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/forms */ 8849); - - - - - - -let PcapUploaderModule = class PcapUploaderModule {}; -PcapUploaderModule = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_4__.CommonModule, _app_app_material_module__WEBPACK_IMPORTED_MODULE_1__.MaterialModule, _angular_forms__WEBPACK_IMPORTED_MODULE_5__.FormsModule], - declarations: [_pcap_uploader_component__WEBPACK_IMPORTED_MODULE_0__.PcapUploaderComponent], - exports: [_pcap_uploader_component__WEBPACK_IMPORTED_MODULE_0__.PcapUploaderComponent] -})], PcapUploaderModule); - -/***/ }), - -/***/ 2603: -/*!************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-flow/tap-flow.component.ts ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TapFlowComponent: () => (/* binding */ TapFlowComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _tap_flow_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tap-flow.component.html?ngResource */ 7174); -/* harmony import */ var _tap_flow_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tap-flow.component.scss?ngResource */ 6364); -/* harmony import */ var _tap_flow_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_tap_flow_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - -let TapFlowComponent = class TapFlowComponent { - set data(val) { - this.colLength = val?.nodes?.length || 0; - this.hosts = val?.nodes || []; - this.flowItems = val?.flows || []; - setTimeout(() => { - _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.Functions.emitWindowResize(); - this.cdr.detectChanges(); - }, 1500); - } - constructor(cdr, wiregasmService) { - this.cdr = cdr; - this.wiregasmService = wiregasmService; - this.colLength = 0; - this.hosts = []; - this.flowItems = []; - this.selectedIndex = -1; - } - ngOnInit() { - const nodes = this.wiregasmService.getHosts(); - const flows = this.wiregasmService.getFlowItems(); - ; - this.colLength = nodes?.length || 0; - this.hosts = nodes || []; - this.flowItems = flows || []; - setTimeout(() => { - _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.Functions.emitWindowResize(); - this.cdr.detectChanges(); - }, 1500); - } - ngAfterContentInit() { - setTimeout(() => { - _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.Functions.emitWindowResize(); - this.cdr.detectChanges(); - }, 650); - } - ngAfterViewInit() { - setTimeout(() => { - this.cdr.detectChanges(); - }, 650); - } - getFrom(n) { - const [a, b] = n; - return Math.min(a, b); - } - getTo(n) { - const [a, b] = n; - return Math.max(a, b); - } - getDirection(n) { - const [a, b] = n; - return a > b; - } - getColor(p = []) { - return `#${(0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.hash)(p.sort().toString(), 6)}`; - } - setSelected(index) { - this.selectedIndex = index; - this.cdr.detectChanges(); - } - getSelected(index) { - return this.selectedIndex === index; - } - static #_ = this.ctorParameters = () => [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectorRef - }, { - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_3__.WiregasmService - }]; - static #_2 = this.propDecorators = { - data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }] - }; -}; -TapFlowComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Component)({ - selector: 'tap-flow', - template: _tap_flow_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ChangeDetectionStrategy.OnPush, - styles: [(_tap_flow_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], TapFlowComponent); - -/***/ }), - -/***/ 7801: -/*!*********************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-flow/tap-flow.module.ts ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TapFlowModule: () => (/* binding */ TapFlowModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../no-data/no-data.module */ 5284); -/* harmony import */ var _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/cdk/scrolling */ 275); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _tap_flow_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tap-flow.component */ 2603); -/* harmony import */ var _angular_material_grid_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/grid-list */ 647); - - - - - - - -let TapFlowModule = class TapFlowModule {}; -TapFlowModule = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_4__.CommonModule, _angular_material_grid_list__WEBPACK_IMPORTED_MODULE_5__.MatGridListModule, _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_6__.ScrollingModule, _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_0__.NoDataModule], - declarations: [_tap_flow_component__WEBPACK_IMPORTED_MODULE_1__.TapFlowComponent], - exports: [_tap_flow_component__WEBPACK_IMPORTED_MODULE_1__.TapFlowComponent] -})], TapFlowModule); - -/***/ }), - -/***/ 3166: -/*!***************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-page.component.ts ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TapPageComponent: () => (/* binding */ TapPageComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _tap_page_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tap-page.component.html?ngResource */ 634); -/* harmony import */ var _tap_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tap-page.component.scss?ngResource */ 470); -/* harmony import */ var _tap_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_tap_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); - - - - -let TapPageComponent = class TapPageComponent { - constructor() { - this.loading = false; - this.title = ''; - this.jsonData = null; - this.type = ''; - } - set taplink(obj) { - this.title = obj.name; - this.type = obj?.type; - this.jsonData = obj?.jsonData; - console.log('taplink ==> ', obj); - } - static #_ = this.propDecorators = { - taplink: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_2__.Input - }] - }; -}; -TapPageComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Component)({ - selector: 'tap-page', - template: _tap_page_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - styles: [(_tap_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], TapPageComponent); - -/***/ }), - -/***/ 9942: -/*!************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-page.module.ts ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TapPageModule: () => (/* binding */ TapPageModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _tap_page_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tap-page.component */ 3166); -/* harmony import */ var _tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../tree-filter/tree-filter.module */ 6520); -/* harmony import */ var _tap_flow_tap_flow_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tap-flow/tap-flow.module */ 7801); -/* harmony import */ var _tap_rtp_streams_tap_rtp_streams_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tap-rtp-streams/tap-rtp-streams.module */ 8301); -/* harmony import */ var _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../no-data/no-data.module */ 5284); -/* harmony import */ var _chart_and_table_chart_and_table_module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../chart-and-table/chart-and-table.module */ 3267); - - - - - - - - - -let TapPageModule = class TapPageModule {}; -TapPageModule = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_8__.CommonModule, _tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_1__.TreeFilterModule, _tap_flow_tap_flow_module__WEBPACK_IMPORTED_MODULE_2__.TapFlowModule, _tap_rtp_streams_tap_rtp_streams_module__WEBPACK_IMPORTED_MODULE_3__.TapRtpStreamsModule, _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_4__.NoDataModule, _chart_and_table_chart_and_table_module__WEBPACK_IMPORTED_MODULE_5__.ChartAndTableModule], - declarations: [_tap_page_component__WEBPACK_IMPORTED_MODULE_0__.TapPageComponent], - exports: [_tap_page_component__WEBPACK_IMPORTED_MODULE_0__.TapPageComponent] -})], TapPageModule); - -/***/ }), - -/***/ 6857: -/*!**************************************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-rtp-streams/stream-detail/stream-detail.component.ts ***! - \**************************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ StreamDetailComponent: () => (/* binding */ StreamDetailComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _stream_detail_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stream-detail.component.html?ngResource */ 9980); -/* harmony import */ var _stream_detail_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stream-detail.component.scss?ngResource */ 1320); -/* harmony import */ var _stream_detail_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_stream_detail_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var wavesurfer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! wavesurfer.js */ 9528); -/* harmony import */ var wavesurfer_js_dist_plugins_timeline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! wavesurfer.js/dist/plugins/timeline */ 7833); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - - - -const DATA_TYPE = 'application/octet-stream'; -let StreamDetailComponent = class StreamDetailComponent { - onClose() { - console.log('StreamDetailComponent::onClose'); - this.close.emit({}); - } - set data(val) { - this._data = val; - this.streams = val.streams || []; - const [stream] = this.streams || []; - this.columns = Object.keys(stream || []); - } - get data() { - return this._data; - } - constructor(webSharkDataService, cdr) { - this.webSharkDataService = webSharkDataService; - this.cdr = cdr; - this.streams = []; - this.players = []; - this.optionsAudioContainer = { - // waveColor: '#D2EDD4', - normalize: true, - progressColor: 'green', - responsive: true, - minPxPerSec: 100 - }; - this.close = new _angular_core__WEBPACK_IMPORTED_MODULE_7__.EventEmitter(); - this.typeOfChartRadio = 'bar'; - this.isReady = false; - this.progressMessage = ['Initialization']; - this.chartData = []; - this.rangeChartData = []; - this.audioStreamsBlobURL = []; - this.columnDictionary = { - bw: 'IP BW (kbps)', - d: 'Delta', - f: 'Packet (Time)', - j: 'Jitter', - mark: 'Marker', - o: 'o', - s: 'Status', - sk: 'Skew (ms)', - sn: 'Sequence', - t: 't' - }; - this.chartFilter = Object.entries(this.columnDictionary).map(([key, val]) => ({ - title: val, - index: key, - color: '#' + (0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.hash)(key, 3), - value: true - })); - this.columnsDictionary = Object.values(this.columnDictionary); - } - get titleId() { - try { - const [tap] = this.rec.rowData.taps; - // console.log( - // tap - // ) - const [sip, sport, dip, dport, ssrc] = (tap.tap || '').split(/[_]+/g); - return `${ssrc} - ${sip}:${sport} -> ${dip}:${dport}`; - } catch (err) { - return 'SSRC: ' + this.rec.rowData.ssrc; - } - } - get captureFile() { - return this.webSharkDataService.getCapture(); - } - getFileArrayOfUint8Array(filename) { - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const href = encodeURIComponent('/' + filename); - const url = `/webshark/json?method=download&capture=${href}&token=self`; - const { - body - } = yield fetch(url); - const reader = body?.getReader(); - if (!reader) { - console.error(new Error('Could not get file')); - return new Blob([], { - type: DATA_TYPE - }); - } - let isDone = false; - const collectArrayData = []; - while (!isDone) { - const { - value, - done - } = yield reader.read(); - if (value) { - collectArrayData.push(value); - } - isDone = done; - } - // console.log({ collectArrayData }); - return new Blob(collectArrayData, { - type: DATA_TYPE - }); - })(); - } - // blobSaveAsFile(blobUrl: string, filename: string) { - // var link = document.createElement("a"); // Or maybe get it from the current document - // link.href = blobUrl; - // link.download = filename; - // link.innerHTML = "Click here to download the file"; - // document.body.appendChild(link); - // } - /** - * parse PCAP to rtp-strems binnary data - * FFMPEG - */ - ffmpegDecoder() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - _this.progressMessage.push(`Reading data from ${_this.captureFile} file`); - _this.cdr.detectChanges(); - // const blobData: Blob = await this.getFileArrayOfUint8Array(this.captureFile); - const blobData = yield _this.webSharkDataService.blobFile; - console.log('>>> ', _this.captureFile, { - blobData - }); - // const blobUrl = await transcode(blobData); - // console.log(blobUrl) - _this.progressMessage.push('Separate PCAP to frames'); - _this.cdr.detectChanges(); - const index = yield _this.webSharkDataService.getFrames(0); - console.log({ - index - }); - let offset = 24; - const arrOffset = index.map((i, k, arr) => { - if (k > 0) { - offset += +arr[k - 1].colData[5]; - } - offset += 16; - return [offset, ...i.colData, blobData.slice(offset, offset + +i.colData[5], DATA_TYPE)]; - }); - // console.log(arrOffset); - _this.progressMessage.push('Collect payload binary to streams'); - _this.cdr.detectChanges(); - // rtp-streams - const rtpStreams = []; - const _collect = {}; - index.filter(item => { - const info = item.colData[6]; - return !!info.match(/SSRC=/g); - }).forEach(item => { - const info = item.colData[6]; - const outData = {}; - info.split(/\,\s/g).forEach(i => { - const [key, val] = i.split('='); - if (key === 'SSRC') { - _collect[val] = true; - } - outData[key] = val; - }); - rtpStreams.push(outData); - }); - // const { taps: [{ streams: rtpStreams }] } = await this.webSharkDataService.getTapJson('rtp-streams'); - const arrSSRC = Object.keys(_collect); - console.log({ - _collect, - rtpStreams - }); - _this.streams = arrSSRC.map(i => { - return { - ssrc: i - }; - }); - // return []; - const arr = arrSSRC.map(streamData => { - return { - ssrc: streamData, - data: { - SSRC: streamData - }, - blob: new Blob(arrOffset.filter(frame => frame[7].toUpperCase().includes(`SSRC=${streamData.toUpperCase()}`)).map(i => i[8].slice(54)), { - type: DATA_TYPE - }) - }; - }); - // debugger; - // console.log({ arr }) - const codecDictionary = { - 'g711a': 'alaw', - 'g711u': 'mulaw', - 'g722': 'g722' - }; - const out = []; - for (let item of arr) { - // console.log('<>>>>', item.data); - const codec = codecDictionary[(item.data?.payload + '').toLowerCase()] || 'g722'; - // console.log('<>>>>', {codec}); - // const i = arr[0]; - _this.progressMessage.push(`FFmpeg:: converting ${item.ssrc} stream to audio (mp3)`); - _this.cdr.detectChanges(); - const blobUrl = yield transcode(item.blob, codec, `audio-${item.ssrc}.mp3`); - // console.log(blobUrl) - out.push({ - ssrc: item.ssrc, - blobUrl - }); - // this.blobSaveAsFile(blobUrl, `audio-${item.ssrc}.mp3`); - } - - console.log({ - out - }); - return out; - })(); - } - // async ffmpegDecoder() { - // this.progressMessage.push(`Reading data from ${this.captureFile} file`); - // this.cdr.detectChanges(); - // const blobData: Blob = await this.getFileArrayOfUint8Array(this.captureFile); - // // console.log(this.captureFile, { blobData }); - // // const blobUrl = await transcode(blobData); - // // console.log(blobUrl) - // this.progressMessage.push('Separate PCAP to frames'); - // this.cdr.detectChanges(); - // const index = await this.webSharkDataService.getFrames(0); - // let offset = 24; - // const arrOffset = index.map((i: any, k: number, arr: any[]) => { - // if (k > 0) { - // offset += +arr[k - 1].c[5]; - // } - // offset += 16; - // return [offset, ...i.c, blobData.slice(offset, offset + +i.c[5], DATA_TYPE)]; - // }) - // // console.log(arrOffset); - // this.progressMessage.push('Collect payload binary to streams') - // this.cdr.detectChanges(); - // // rtp-streams - // const { taps: [{ streams: rtpStreams }] } = await this.webSharkDataService.getTapJson('rtp-streams'); - // // console.log(rtpStreams); - // const arr = rtpStreams.map((streamData: any) => { - // return { - // ssrc: streamData.ssrc, - // data: streamData, - // blob: new Blob(arrOffset - // .filter((frame: any) => frame[7].toUpperCase().includes(`SSRC=${streamData.ssrc.toUpperCase()}`)) - // .map((i: any) => (i[8] as Blob).slice(54)), { type: DATA_TYPE }) - // }; - // }) - // // console.log({ arr }) - // const codecDictionary: any = { - // 'g711a': 'alaw', - // 'g711u': 'mulaw', - // 'g722': 'g722', - // }; - // const out: any[] = []; - // for (let item of arr) { - // // console.log('<>>>>', item.data); - // const codec = codecDictionary[(item.data.payload + '').toLowerCase()] || 'g722'; - // // console.log('<>>>>', {codec}); - // // const i = arr[0]; - // this.progressMessage.push(`FFmpeg:: converting ${item.ssrc} stream to audio (mp3)`); - // this.cdr.detectChanges(); - // const blobUrl = await transcode(item.blob, codec, `audio-${item.ssrc}.mp3`); - // // console.log(blobUrl) - // out.push({ ssrc: item.ssrc, blobUrl }); - // // this.blobSaveAsFile(blobUrl, `audio-${item.ssrc}.mp3`); - // } - // return out; - // } - getPlayer(rec) { - /** - * rec: { id, mp3, player } - */ - if (!rec.player) { - try { - // rec.mp3 = 'http://localhost:8003/assets/we__will_rock_you.mp3' - const player = wavesurfer_js__WEBPACK_IMPORTED_MODULE_4__["default"].create({ - ...this.optionsAudioContainer, - container: '#' + (rec.id || 'audio-player'), - plugins: [wavesurfer_js_dist_plugins_timeline__WEBPACK_IMPORTED_MODULE_5__["default"].create({ - /** The duration of the timeline in seconds, defaults to wavesurfer's duration */ - // duration: 1, - /** Interval between ticks in seconds */ - timeInterval: 0.1, - /** Interval between numeric labels in seconds */ - primaryLabelInterval: 1 - /** Interval between secondary numeric labels in seconds */ - // secondaryLabelInterval: 8, - })] - }); - - if (rec.mp3) { - player.load(rec.mp3); - player.on('ready', () => { - player.zoom(1); - player.on('audioprocess', event => { - this.cdr.detectChanges(); - }); - this.cdr.detectChanges(); - }); - } else { - rec.noData = true; - this.cdr.detectChanges(); - } - rec.player = player; - } catch (err) { - console.log(err, rec); - } - } - return rec; - } - ngOnInit() { - var _this2 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - _this2.audioStreamsBlobURL = yield _this2.ffmpegDecoder(); - _this2.progressMessage.push('done.'); - _this2.cdr.detectChanges(); - requestAnimationFrame(() => { - _this2.isReady = true; - _this2.setRecActive(); - _this2.cdr.detectChanges(); - }); - })(); - } - setRecActive() { - console.log('setRecActive()', this.rec); - // this.players.forEach(p => p.isActive = p.id === id); - let playerElement = this.rec; - const [tap] = playerElement.rowData?.taps || []; - this.selectedStreams = tap?.items || []; - const [item] = this.selectedStreams; - this.selectedColumns = ["bw", "d", "f", "j", "mark", "o", "s", "sk", "sn", "t"]; // Object.keys(item); - this.chartData = this.getChartData(); - this.onRange([0, 0]); - this.cdr.detectChanges(); - } - playItemClick(event) { - console.log({ - event - }); - } - onZoomAudio(event, player) { - // console.log(event.wheelDelta); - if (!player._myZoom) { - player._myZoom = 1; - } - player._myZoom += event.wheelDelta / 12; - player._myZoom = Math.max(1, player._myZoom); - player.zoom(player._myZoom); - this.cdr.detectChanges(); - } - onRange([a, b]) { - const start = Math.min(a, b); - const end = Math.max(a, b); - console.log({ - start, - end - }); - this.lastRange = { - start, - end - }; - this.rangeChartData = []; - this.chartData.forEach(item => { - const out = Object.assign({}, item); - if (start >= 0 && end >= 0 && start != end) { - out.data = out.data.slice(start, end); - } else { - out.data = out.data; - } - this.rangeChartData.push(out); - }); - } - getChartData() { - /** - * format have to be like this: - * [ - { data: [1, 3, 2, 4, 5, 4, 3, 2] }, - { data: [2, 4, 5, 4, 3, 2], typeOfChart: 'area', color: 'red' }, - . . . - { data: [5, 4, 3, 2, 1, 4] } - ] - */ - // this.columnDictionary - const outData = []; - this.selectedColumns.forEach(column => { - if (this.chartFilter.find(i => i.index == column)?.value) { - const d = { - color: '#' + (0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.hash)(column, 3), - name: this.columnDictionary[column], - data: this.selectedStreams.map(stream => stream[column]) - }; - outData.push(d); - } - }); - console.log({ - selectedStreams: this.selectedStreams - }); - return outData; - } - onFilterChart() { - console.log({ - f: 'onFilterChart', - d: this.chartFilter - }); - this.chartData = this.getChartData(); - if (this.lastRange) { - const { - start, - end - } = this.lastRange; - this.onRange([start, end]); - } else { - this.onRange([]); - } - this.cdr.detectChanges(); - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_6__.WiregasmService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.ChangeDetectorRef - }]; - static #_2 = this.propDecorators = { - rec: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input - }], - data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input - }], - close: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Output - }] - }; -}; -StreamDetailComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.Component)({ - selector: 'stream-detail', - template: _stream_detail_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - styles: [(_stream_detail_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], StreamDetailComponent); - -/***/ }), - -/***/ 3489: -/*!**************************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-rtp-streams/tap-rtp-streams.component.ts ***! - \**************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TapRtpStreamsComponent: () => (/* binding */ TapRtpStreamsComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _tap_rtp_streams_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tap-rtp-streams.component.html?ngResource */ 8367); -/* harmony import */ var _tap_rtp_streams_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tap-rtp-streams.component.scss?ngResource */ 9730); -/* harmony import */ var _tap_rtp_streams_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_tap_rtp_streams_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var wavesurfer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! wavesurfer.js */ 9528); -/* harmony import */ var wavesurfer_js_dist_plugins_timeline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! wavesurfer.js/dist/plugins/timeline */ 7833); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - - - -const DATA_TYPE = 'application/octet-stream'; -let TapRtpStreamsComponent = class TapRtpStreamsComponent { - set data(val) { - this._data = val; - this.streams = val.streams || []; - const [stream] = this.streams || []; - this.columns = Object.keys(stream || []); - } - get data() { - return this._data; - } - constructor(webSharkDataService, cdr) { - this.webSharkDataService = webSharkDataService; - this.cdr = cdr; - this.streams = []; - this.players = []; - this.optionsAudioContainer = { - // waveColor: '#D2EDD4', - normalize: true, - progressColor: 'green', - responsive: true, - minPxPerSec: 100 - }; - this.isReady = false; - this.progressMessage = ['Initialization']; - this.audioStreamsBlobURL = []; - } - get captureFile() { - return this.webSharkDataService.getCapture(); - } - getKeys(obj) { - return Object.keys(obj).filter(i => i !== '__selected'); - } - getFileArrayOfUint8Array(filename) { - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const href = encodeURIComponent('/' + filename); - const url = `/webshark/json?method=download&capture=${href}&token=self`; - const { - body - } = yield fetch(url); - const reader = body?.getReader(); - if (!reader) { - console.error(new Error('Could not get file')); - return new Blob([], { - type: DATA_TYPE - }); - } - let isDone = false; - const collectArrayData = []; - while (!isDone) { - const { - value, - done - } = yield reader.read(); - if (value) { - collectArrayData.push(value); - } - isDone = done; - } - // console.log({ collectArrayData }); - return new Blob(collectArrayData, { - type: DATA_TYPE - }); - })(); - } - // blobSaveAsFile(blobUrl: string, filename: string) { - // var link = document.createElement("a"); // Or maybe get it from the current document - // link.href = blobUrl; - // link.download = filename; - // link.innerHTML = "Click here to download the file"; - // document.body.appendChild(link); - // } - /** - * parse PCAP to rtp-strems binnary data - * FFMPEG - */ - ffmpegDecoder() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - _this.progressMessage.push(`Reading data from ${_this.captureFile} file`); - _this.cdr.detectChanges(); - const blobData = yield _this.webSharkDataService.blobFile; - // const blobData: Blob = await this.getFileArrayOfUint8Array(this.captureFile); - // console.log(this.captureFile, { blobData }); - // const blobUrl = await transcode(blobData); - // console.log(blobUrl) - _this.progressMessage.push('Separate PCAP to frames'); - _this.cdr.detectChanges(); - const index = yield _this.webSharkDataService.getFrames(0); - console.log({ - index - }); - let offset = 24; - const arrOffset = index.map((i, k, arr) => { - if (k > 0) { - offset += +arr[k - 1].colData[5]; - } - offset += 16; - return [offset, ...i.colData, blobData.slice(offset, offset + +i.colData[5], DATA_TYPE)]; - }); - // console.log(arrOffset); - _this.progressMessage.push('Collect payload binary to streams'); - _this.cdr.detectChanges(); - // rtp-streams - const rtpStreams = []; - const _collect = {}; - index.filter(item => { - const info = item.colData[6]; - return !!info.match(/SSRC=/g); - }).forEach(item => { - const info = item.colData[6]; - const outData = {}; - info.split(/\,\s/g).forEach(i => { - const [key, val] = i.split('='); - if (key === 'SSRC') { - _collect[val] = true; - } - outData[key] = val; - }); - rtpStreams.push(outData); - }); - // const { taps: [{ streams: rtpStreams }] } = await this.webSharkDataService.getTapJson('rtp-streams'); - const arrSSRC = Object.keys(_collect); - console.log({ - _collect, - rtpStreams - }); - _this.streams = arrSSRC.map(i => { - return { - ssrc: i - }; - }); - // return []; - const arr = arrSSRC.map(streamData => { - return { - ssrc: streamData, - data: { - SSRC: streamData - }, - blob: new Blob(arrOffset.filter(frame => frame[7].toUpperCase().includes(`SSRC=${streamData.toUpperCase()}`)).map(i => i[8].slice(54)), { - type: DATA_TYPE - }) - }; - }); - // debugger; - // console.log({ arr }) - const codecDictionary = { - 'g711a': 'alaw', - 'g711u': 'mulaw', - 'g722': 'g722' - }; - const out = []; - for (let item of arr) { - // console.log('<>>>>', item.data); - const codec = codecDictionary[(item.data?.payload + '').toLowerCase()] || 'g722'; - // console.log('<>>>>', {codec}); - // const i = arr[0]; - _this.progressMessage.push(`FFmpeg:: converting ${item.ssrc} stream to audio (mp3)`); - _this.cdr.detectChanges(); - const blobUrl = yield transcode(item.blob, codec, `audio-${item.ssrc}.mp3`); - // console.log(blobUrl) - out.push({ - ssrc: item.ssrc, - blobUrl - }); - // this.blobSaveAsFile(blobUrl, `audio-${item.ssrc}.mp3`); - } - - console.log({ - out - }); - return out; - })(); - } - getPlayer(rec) { - /** - * rec: { id, mp3, player } - */ - if (!rec.player) { - try { - const player = wavesurfer_js__WEBPACK_IMPORTED_MODULE_4__["default"].create({ - ...this.optionsAudioContainer, - container: '#' + (rec.id || 'audio-player'), - plugins: [wavesurfer_js_dist_plugins_timeline__WEBPACK_IMPORTED_MODULE_5__["default"].create({ - /** The duration of the timeline in seconds, defaults to wavesurfer's duration */ - // duration: 1, - /** Interval between ticks in seconds */ - timeInterval: 0.1, - /** Interval between numeric labels in seconds */ - primaryLabelInterval: 1 - /** Interval between secondary numeric labels in seconds */ - // secondaryLabelInterval: 8, - })] - }); - - if (rec.mp3) { - player.load(rec.mp3); - player.on('ready', () => { - player.zoom(1); - player.on('audioprocess', event => { - this.cdr.detectChanges(); - }); - this.cdr.detectChanges(); - }); - } else { - rec.noData = true; - this.cdr.detectChanges(); - } - rec.player = player; - } catch (err) { - console.log(err, rec); - } - } - return rec; - } - ngOnInit() { - var _this2 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - _this2.audioStreamsBlobURL = yield _this2.ffmpegDecoder(); - _this2.progressMessage.push('done.'); - _this2.cdr.detectChanges(); - requestAnimationFrame(() => { - _this2.isReady = true; - _this2.cdr.detectChanges(); - }); - })(); - } - onClosePlayer(idx) { - // console.log({idx}) - this.players = this.players.filter((i, k) => k !== idx); - this.cdr.detectChanges(); - } - rowClick({ - row - }) { - var _this3 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - // this.streams - console.log(_this3.streams, { - row - }); - const id = `player-${(0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.hash)(JSON.stringify(row))}`; - let playerElement = _this3.players.find(p => p.id === id); - if (!playerElement) { - playerElement = { - id, - mp3: _this3.audioStreamsBlobURL.find(i => i.ssrc.toUpperCase() === row.ssrc.toUpperCase())?.blobUrl, - rowData: { - ssrc: row.ssrc - } - }; - requestAnimationFrame(() => { - playerElement = _this3.getPlayer(playerElement); - _this3.cdr.detectChanges(); - }); - _this3.players.push(playerElement); - } - playerElement.hide = false; - _this3.setRecActive({ - id - }); - })(); - } - setRecActive({ - id - }) { - this.players.forEach(p => p.isActive = p.id === id); - let playerElement = this.players.find(p => p.id === id); - const [tap] = playerElement.rowData?.taps || []; - this.selectedStreams = tap?.items || []; - const [item] = this.selectedStreams; - this.selectedColumns = ["bw", "d", "f", "j", "mark", "o", "s", "sk", "sn", "t"]; // Object.keys(item); - this.cdr.detectChanges(); - } - playItemClick(event) { - console.log({ - event - }); - } - onZoomAudio(event, player) { - // console.log(event.wheelDelta); - if (!player._myZoom) { - player._myZoom = 1; - } - player._myZoom += event.wheelDelta / 12; - player._myZoom = Math.max(1, player._myZoom); - player.zoom(player._myZoom); - this.cdr.detectChanges(); - } - seekAndCenter(player, step = 0.1) { - if (!player) { - return; - } - const duration = player.getDuration(); - const position = player.getCurrentTime(); - const percent = position / duration; - const out = Math.min(Math.max(0, percent + step), 1); - player.seekAndCenter(out); - this.cdr.detectChanges(); - } - closeRec({ - id - }) { - const item = this.players.find(p => p.id === id); - item.hide = true; - console.log({ - id, - item - }, this.players); - this.cdr.detectChanges(); - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_6__.WiregasmService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.ChangeDetectorRef - }]; - static #_2 = this.propDecorators = { - data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input - }] - }; -}; -TapRtpStreamsComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_8__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.Component)({ - selector: 'tap-rtp-streams', - template: _tap_rtp_streams_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_7__.ChangeDetectionStrategy.OnPush, - styles: [(_tap_rtp_streams_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], TapRtpStreamsComponent); - -/***/ }), - -/***/ 8301: -/*!***********************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-rtp-streams/tap-rtp-streams.module.ts ***! - \***********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TapRtpStreamsModule: () => (/* binding */ TapRtpStreamsModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @angular/material/button */ 895); -/* harmony import */ var _angular_material_icon__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/material/icon */ 6515); -/* harmony import */ var _angular_material_card__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/material/card */ 8497); -/* harmony import */ var angular_split__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! angular-split */ 6944); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _tap_rtp_streams_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tap-rtp-streams.component */ 3489); -/* harmony import */ var _custom_table_custom_table_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../custom-table/custom-table.module */ 5599); -/* harmony import */ var _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @angular/cdk/scrolling */ 275); -/* harmony import */ var _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../no-data/no-data.module */ 5284); -/* harmony import */ var _stream_detail_stream_detail_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream-detail/stream-detail.component */ 6857); -/* harmony import */ var _modal_resizable_modal_resizable_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../modal-resizable/modal-resizable.module */ 4554); -/* harmony import */ var _angular_material_tabs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/material/tabs */ 989); -/* harmony import */ var _flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../flexible-chart/flexible-chart.module */ 6821); -/* harmony import */ var _angular_material_checkbox__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @angular/material/checkbox */ 6658); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/forms */ 8849); -/* harmony import */ var _angular_material_radio__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/material/radio */ 2106); - - - - - - - - - - - - - - - - - - -let TapRtpStreamsModule = class TapRtpStreamsModule {}; -TapRtpStreamsModule = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.NgModule)({ - imports: [_angular_forms__WEBPACK_IMPORTED_MODULE_8__.FormsModule, _angular_forms__WEBPACK_IMPORTED_MODULE_8__.ReactiveFormsModule, _angular_common__WEBPACK_IMPORTED_MODULE_9__.CommonModule, _custom_table_custom_table_module__WEBPACK_IMPORTED_MODULE_1__.CustomTableModule, angular_split__WEBPACK_IMPORTED_MODULE_10__.AngularSplitModule, _angular_material_card__WEBPACK_IMPORTED_MODULE_11__.MatCardModule, _angular_material_icon__WEBPACK_IMPORTED_MODULE_12__.MatIconModule, _angular_material_button__WEBPACK_IMPORTED_MODULE_13__.MatButtonModule, _angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_14__.ScrollingModule, _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_2__.NoDataModule, _modal_resizable_modal_resizable_module__WEBPACK_IMPORTED_MODULE_4__.ModalResizableModule, _angular_material_tabs__WEBPACK_IMPORTED_MODULE_15__.MatTabsModule, _flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_5__.FlexibleChartModule, _angular_material_checkbox__WEBPACK_IMPORTED_MODULE_16__.MatCheckboxModule, _angular_material_radio__WEBPACK_IMPORTED_MODULE_17__.MatRadioModule], - declarations: [ - // ModalResizableComponent, - _stream_detail_stream_detail_component__WEBPACK_IMPORTED_MODULE_3__.StreamDetailComponent, _tap_rtp_streams_component__WEBPACK_IMPORTED_MODULE_0__.TapRtpStreamsComponent], - exports: [_tap_rtp_streams_component__WEBPACK_IMPORTED_MODULE_0__.TapRtpStreamsComponent] -})], TapRtpStreamsModule); - -/***/ }), - -/***/ 4062: -/*!**************************************************************!*\ - !*** ./src/app/components/controls/tree-filter/html.pipe.ts ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HtmlPipe: () => (/* binding */ HtmlPipe) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/platform-browser */ 6480); - - - -let HtmlPipe = class HtmlPipe { - constructor(sanitizer) { - this.sanitizer = sanitizer; - } - transform(value) { - return this.sanitizer.bypassSecurityTrustHtml(`${value}`); - } - static #_ = this.ctorParameters = () => [{ - type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__.DomSanitizer - }]; -}; -HtmlPipe = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Pipe)({ - name: 'html' -})], HtmlPipe); - -/***/ }), - -/***/ 3549: -/*!**************************************************************************!*\ - !*** ./src/app/components/controls/tree-filter/tree-filter.component.ts ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TreeFilterComponent: () => (/* binding */ TreeFilterComponent) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _tree_filter_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tree-filter.component.html?ngResource */ 695); -/* harmony import */ var _tree_filter_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree-filter.component.scss?ngResource */ 1104); -/* harmony import */ var _tree_filter_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_tree_filter_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_cdk_tree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/cdk/tree */ 6747); -/* harmony import */ var _angular_material_tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/material/tree */ 7321); - - - - - - - - -let TreeFilterComponent = class TreeFilterComponent { - set defaultFilterValue(val) { - if (!val) { - return; - } - this.textFilterTree = val; - this.onKeyUpFilterTree(); - // console.log('textFilterTree = val') - } - - set jsonData(val) { - if (!val) { - return; - } - if (typeof val === 'string') { - val = _app_helper_functions__WEBPACK_IMPORTED_MODULE_2__.Functions.JSON_parse(val) || {}; - } - const convertObjectToTreeData = data => { - return Object.entries(data).map(([key, value]) => { - if (typeof value !== 'object') { - return { - name: `${key}: ${value}`, - description: key - }; - } - const o = convertObjectToTreeData(value); - const _length = Object.keys(value).length; - return { - name: `${key}: [${_length}] ${JSON.stringify(value)}`, - description: key, - children: o - }; - }); - }; - this.data = convertObjectToTreeData(val); - } - set data(val) { - if (!val) { - return; - } - this.dataSource.data = val; - this.dataIndex = []; - // console.log('this.dataSource.data = val;') - const pushToIndex = i => { - i.forEach(({ - name, - description, - children - }) => { - const o = { - name, - description: description || name - }; - if (children) { - o.children = (JSON.stringify(children) + '').replace(/[\W]+/g, ' ').toLowerCase(); - } - this.dataIndex.push(o); - if (children) { - pushToIndex(children); - } - }); - }; - pushToIndex(val); - setTimeout(() => { - this.cdr.detectChanges(); - this.onKeyUpFilterTree(); - if (this.noPadding) { - this.tree.treeControl.expandAll(); - } - }); - } - constructor(cdr) { - this.cdr = cdr; - this.isFilterLine = true; - this.noPadding = false; - this.selectedHexArray = []; - this.isFilter = true; - this.fileIcon = false; - this.textFilterGrid = ''; - this.textFilterTree = ''; - this.dataIndex = []; - this.bufferFiltered = []; - this.treeControl = new _angular_cdk_tree__WEBPACK_IMPORTED_MODULE_3__.FlatTreeControl(node => node.level, node => node.expandable); - this.treeFlattener = new _angular_material_tree__WEBPACK_IMPORTED_MODULE_4__.MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children); - this.dataSource = new _angular_material_tree__WEBPACK_IMPORTED_MODULE_4__.MatTreeFlatDataSource(this.treeControl, this.treeFlattener); - this.filter = new _angular_core__WEBPACK_IMPORTED_MODULE_5__.EventEmitter(); - this.clickRow = new _angular_core__WEBPACK_IMPORTED_MODULE_5__.EventEmitter(); - this.dataSource.data = [{ - name: 'Loading...' - }]; - } - hasChild(_, node) { - return node.expandable; - } - _transformer(node, level) { - return { - expandable: !!node.children?.length, - description: node.description, - highlight: node.highlight, - hide: node.hide, - name: node.name, - level: level - }; - } - highlight(text, isRedial = false) { - if (this.textFilterTree === '') { - return text; - } - const arr = this.textFilterTree.split('||'); - let outText = text; - arr.forEach((f, key) => { - const color = ['yellow', '#ffcaca', '#b7f875', '#86f2fb', '#DD99FF', '#eea371'][key % 6]; - const redial = isRedial ? 'border-radius: 4px;' : 'color: black; border-radius: 2px;'; - const tag = `${f}`; - outText = f !== '' && outText.includes(f) ? outText.replaceAll(f, tag) : outText; - }); - return outText; - } - isSelectedHexArray({ - description - }) { - return this.selectedHexArray.map(i => i.description).includes(description); - } - treeFilter({ - description: d, - name: n - }) { - if (this.textFilterTree === '') { - return true; - } - return this.bufferFiltered.find(({ - name, - description - }) => d && d !== '' ? name + description === n + d : name === n); - } - filterGrid(details) { - if (true) { - return details; - } - /** code */ - } - - ngAfterViewInit() { - if (this.noPadding || this.textFilterTree !== '') { - this.tree.treeControl.expandAll(); - } - setTimeout(() => { - this.cdr.detectChanges(); - }); - } - ngOnInit() { - this.cdr.detectChanges(); - } - onKeyUpFilterTree() { - const tc = this.tree?.treeControl || {}; - if (tc.expandAll && tc.collapseAll) { - if (this.textFilterTree !== '') { - tc.expandAll(); - } else { - tc.collapseAll(); - } - } - // console.log('------------', this.bufferFiltered) - const b = this.dataIndex.filter(i => !!Math.max(...this.textFilterTree.toLowerCase().split('||').map(f => { - return (i.description + i.name + (i.children || '')).toLowerCase().includes(f); - }))); - this.bufferFiltered = b; - setTimeout(() => { - this.cdr.detectChanges(); - }, 500); - } - setFilterGrid(textFilter) { - this.textFilterGrid = textFilter; - this.filter.emit(textFilter); - this.cdr.detectChanges(); - } - onClickLine(data) { - // console.log(data) - this.clickRow.emit(data); - } - static #_ = this.ctorParameters = () => [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectorRef - }]; - static #_2 = this.propDecorators = { - isFilterLine: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - noPadding: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - defaultFilterValue: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - jsonData: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - data: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - selectedHexArray: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - isFilter: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - fileIcon: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - tree: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ViewChild, - args: ['tree'] - }], - filter: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Output - }], - clickRow: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Output - }] - }; -}; -TreeFilterComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({ - selector: 'tree-filter', - template: _tree_filter_component_html_ngResource__WEBPACK_IMPORTED_MODULE_0__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectionStrategy.OnPush, - styles: [(_tree_filter_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_1___default())] -})], TreeFilterComponent); - -/***/ }), - -/***/ 6520: -/*!***********************************************************************!*\ - !*** ./src/app/components/controls/tree-filter/tree-filter.module.ts ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ TreeFilterModule: () => (/* binding */ TreeFilterModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/material/tooltip */ 702); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _tree_filter_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tree-filter.component */ 3549); -/* harmony import */ var _angular_material_tree__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/tree */ 7321); -/* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/material/button */ 895); -/* harmony import */ var _angular_material_icon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/material/icon */ 6515); -/* harmony import */ var _angular_material_input__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material/input */ 26); -/* harmony import */ var _angular_material_form_field__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/material/form-field */ 1333); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/forms */ 8849); -/* harmony import */ var _html_pipe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./html.pipe */ 4062); - - - - - - - - - - - - -let TreeFilterModule = class TreeFilterModule {}; -TreeFilterModule = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_4__.CommonModule, _angular_material_tree__WEBPACK_IMPORTED_MODULE_5__.MatTreeModule, _angular_material_button__WEBPACK_IMPORTED_MODULE_6__.MatButtonModule, _angular_material_icon__WEBPACK_IMPORTED_MODULE_7__.MatIconModule, _angular_material_input__WEBPACK_IMPORTED_MODULE_8__.MatInputModule, _angular_material_form_field__WEBPACK_IMPORTED_MODULE_9__.MatFormFieldModule, _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_10__.MatTooltipModule, _angular_forms__WEBPACK_IMPORTED_MODULE_11__.FormsModule], - declarations: [_tree_filter_component__WEBPACK_IMPORTED_MODULE_0__.TreeFilterComponent, _html_pipe__WEBPACK_IMPORTED_MODULE_1__.HtmlPipe], - exports: [_tree_filter_component__WEBPACK_IMPORTED_MODULE_0__.TreeFilterComponent] -})], TreeFilterModule); - -/***/ }), - -/***/ 9989: -/*!***********************************************************!*\ - !*** ./src/app/components/controls/webshark/html.pipe.ts ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HtmlPipe: () => (/* binding */ HtmlPipe) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/platform-browser */ 6480); - - - -let HtmlPipe = class HtmlPipe { - constructor(sanitizer) { - this.sanitizer = sanitizer; - } - transform(value) { - return this.sanitizer.bypassSecurityTrustHtml(`${value}`); - } - static #_ = this.ctorParameters = () => [{ - type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__.DomSanitizer - }]; -}; -HtmlPipe = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Pipe)({ - name: 'html' -})], HtmlPipe); - -/***/ }), - -/***/ 1930: -/*!********************************************************************!*\ - !*** ./src/app/components/controls/webshark/webshark.component.ts ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WebsharkComponent: () => (/* binding */ WebsharkComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _webshark_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webshark.component.html?ngResource */ 769); -/* harmony import */ var _webshark_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webshark.component.scss?ngResource */ 3474); -/* harmony import */ var _webshark_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webshark_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_services_hightlight_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @app/services/hightlight.service */ 1820); -/* harmony import */ var _alert_alert_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../alert/alert.service */ 611); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../../../../environments/environment */ 553); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - - - - -let WebsharkComponent = class WebsharkComponent { - set range(val) { - if (val) { - const [from, to] = (val || []).sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - if (from === to) { - this.detailsTable = this.destDetailsTable; - this.cdr.detectChanges(); - return; - } - if ((from === 0 || from) && to) { - this.detailsTable = this.destDetailsTable.slice(from, to); - this.cdr.detectChanges(); - } - } - } - constructor(webSharkDataService, highlightService, cdr, alertService) { - this.webSharkDataService = webSharkDataService; - this.highlightService = highlightService; - this.cdr = cdr; - this.alertService = alertService; - this.textFilterGrid = ''; - this.dataTree = []; - this.destDetailsTable = []; - this.detailsTable = []; - this.columnsTable = ['id', 'time', 'source', 'description', 'protocol', 'length', 'info']; - this.dataIndex = []; - this.frameHexDataBase64 = ''; - this.sizeUp = false; - this.selectedHexArray = []; - this.isKIOSK = !!_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.kiosk; - this.fileList = []; - this.framePosition = ['horizontal', 'vertical']; - this.ready = new _angular_core__WEBPACK_IMPORTED_MODULE_8__.EventEmitter(); - this.dblclick = new _angular_core__WEBPACK_IMPORTED_MODULE_8__.EventEmitter(); - } - ngAfterViewInit() { - setTimeout(() => { - // this.ready.emit({}); - this.cdr.detectChanges(); - }, 100); - } - ngOnInit() { - this.textFilterGrid = this.webSharkDataService.getFilter(); - this.webSharkDataService.updates.subscribe(() => this.initData()); - } - onClickFile(filename) { - this.webSharkDataService.setCaptureFile(filename); - } - initData() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - // try { - const data = yield _this.webSharkDataService.getFrames(0); - console.log('initData()', { - data - }); - _this.destDetailsTable = data.map(frame => { - const [id, time, source, description, protocol, length, info] = frame.colData; - const { - bg, - fg - } = frame; - return { - id, - time, - source, - description, - protocol, - length, - info, - bg, - fg - }; - }); - _this.detailsTable = _this.destDetailsTable; - _this.ready.emit([{ - color: 'rgba(255,255,255, 0.8)', - data: _this.destDetailsTable.map(i => i.length * 1) - }]); - _this.cdr.detectChanges(); - _this.setDefaultSelection(); - // } catch (error) { - // console.log({error}) - // return; - // } - _this.initFrameData(1); - _this.cdr.detectChanges(); - })(); - } - setDefaultSelection() { - const dataGrid = this.dataGrid; - if (dataGrid) { - dataGrid.setSelected(0); - } else { - setTimeout(() => { - this.setDefaultSelection(); - }, 500); - } - } - initFrameData(frameId) { - var _this2 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const frameData = yield _this2.webSharkDataService.getFrameData(frameId); - console.log({ - frameData - }); - // this.frameHexDataBase64 = frameData.bytes; - try { - _this2.frameHexDataBase64 = frameData.data_sources[0].data; - _this2.dataIndex = []; - const convert = ({ - label: name, - filter: description, - tree: n, - length, - start - }) => { - const highlight = [start, length]; - const out = { - name, - description, - highlight, - children: n?.map(item => convert(item)) - }; - _this2.dataIndex.push(_app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.cloneObject(out)); - return out; - }; - _this2.dataTree = frameData?.tree?.map(frame => convert(frame)) || []; - // console.log({ ws_this_dataIndex: this.dataIndex }); - _this2.ngAfterViewInit(); - _this2.cdr.detectChanges(); - } catch (e) {} - })(); - } - showMessage(event) { - this.initFrameData(+event.row.id); - } - openDetails(event) { - const data = event?.row?.item; - data.uniqueId = _app_helper_functions__WEBPACK_IMPORTED_MODULE_3__.Functions.md5object(data); - this.dblclick.emit({ - data - }); - } - filterGrid(details) { - const indexesOfFrame = this.webSharkDataService.getFrameNumberByFilter(this.textFilterGrid); - if (indexesOfFrame.length > 0) { - return indexesOfFrame.map(i => details[i]); - } else { - return details; - } - } - onSelectedHex(x) { - const arraySelected = this.getSelectedItems(x); - this.selectedHexArray = arraySelected || []; - const [selectedHex] = arraySelected.filter(i => !i.children).slice(-1) || []; - if (selectedHex?.highlight) { - this.highlight = selectedHex?.highlight; - this.highlightService.set(this.highlight); - } - // console.log('onSelectedHex', { x, arraySelected }); - this.cdr.detectChanges(); - } - getSelectedItems(x = 0) { - return this.dataIndex.filter(i => { - if (!i.highlight) { - return false; - } - const [from, to] = i.highlight; - return from <= x && from + to > x; - }); - } - setFilter(filter) { - this.textFilterGrid = filter; - // this.webSharkDataService.setFilter(this.textFilterGrid); - } - - onFilterEnter() { - this.setFilter(this.textFilterGrid); - } - onSelected(event) { - this.highlight = event.highlight; - // console.log('onSelected', { event }); - if (this.highlight) { - const arraySelected = this.getSelectedItems(this.highlight[0]); - this.selectedHexArray = arraySelected || []; - this.highlightService.set(this.highlight); - this.cdr.detectChanges(); - } - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_7__.WiregasmService - }, { - type: _app_services_hightlight_service__WEBPACK_IMPORTED_MODULE_4__.HighlightService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.ChangeDetectorRef - }, { - type: _alert_alert_service__WEBPACK_IMPORTED_MODULE_5__.AlertService - }]; - static #_2 = this.propDecorators = { - fileList: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.Input - }], - framePosition: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.Input - }], - range: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.Input - }], - ready: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.Output - }], - dblclick: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.Output - }], - dataGrid: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_8__.ViewChild, - args: ['dataGridTable', { - static: false - }] - }] - }; -}; -WebsharkComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_9__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_8__.Component)({ - selector: 'app-webshark', - template: _webshark_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_8__.ChangeDetectionStrategy.OnPush, - styles: [(_webshark_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], WebsharkComponent); - -/***/ }), - -/***/ 2715: -/*!*****************************************************************!*\ - !*** ./src/app/components/controls/webshark/webshark.module.ts ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WebsharkModule: () => (/* binding */ WebsharkModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../no-data/no-data.module */ 5284); -/* harmony import */ var _flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../flexible-chart/flexible-chart.module */ 6821); -/* harmony import */ var _tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../tree-filter/tree-filter.module */ 6520); -/* harmony import */ var _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/material/tooltip */ 702); -/* harmony import */ var _html_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./html.pipe */ 9989); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _webshark_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./webshark.component */ 1930); -/* harmony import */ var _angular_material_menu__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/material/menu */ 8128); -/* harmony import */ var _angular_material_tree__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @angular/material/tree */ 7321); -/* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @angular/material/button */ 895); -/* harmony import */ var _angular_material_icon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/material/icon */ 6515); -/* harmony import */ var _custom_table_custom_table_module__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../custom-table/custom-table.module */ 5599); -/* harmony import */ var _angular_material_input__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/material/input */ 26); -/* harmony import */ var _angular_material_form_field__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @angular/material/form-field */ 1333); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @angular/forms */ 8849); -/* harmony import */ var _frame_hex_frame_hex_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../frame-hex/frame-hex.module */ 2746); -/* harmony import */ var _angular_material_divider__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/material/divider */ 9400); -/* harmony import */ var _pcap_uploader_pcap_uploader_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../pcap-uploader/pcap-uploader.module */ 6942); -/* harmony import */ var angular_split__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! angular-split */ 6944); -/* harmony import */ var _menu_stat_menu_stat_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../menu-stat/menu-stat.component */ 1879); - - - - - - - - - - - - - - - - - - - - -/** - * https://angular-split.github.io/documentation - */ - - -let WebsharkModule = class WebsharkModule {}; -WebsharkModule = (0,tslib__WEBPACK_IMPORTED_MODULE_9__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_10__.NgModule)({ - imports: [_pcap_uploader_pcap_uploader_module__WEBPACK_IMPORTED_MODULE_7__.PcapUploaderModule, _angular_material_divider__WEBPACK_IMPORTED_MODULE_11__.MatDividerModule, _angular_material_menu__WEBPACK_IMPORTED_MODULE_12__.MatMenuModule, _angular_common__WEBPACK_IMPORTED_MODULE_13__.CommonModule, _angular_material_tree__WEBPACK_IMPORTED_MODULE_14__.MatTreeModule, _angular_material_icon__WEBPACK_IMPORTED_MODULE_15__.MatIconModule, _angular_material_button__WEBPACK_IMPORTED_MODULE_16__.MatButtonModule, _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_17__.MatTooltipModule, _custom_table_custom_table_module__WEBPACK_IMPORTED_MODULE_5__.CustomTableModule, _angular_material_input__WEBPACK_IMPORTED_MODULE_18__.MatInputModule, _angular_material_form_field__WEBPACK_IMPORTED_MODULE_19__.MatFormFieldModule, _angular_forms__WEBPACK_IMPORTED_MODULE_20__.FormsModule, _tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_2__.TreeFilterModule, _frame_hex_frame_hex_module__WEBPACK_IMPORTED_MODULE_6__.FrameHexModule, angular_split__WEBPACK_IMPORTED_MODULE_21__.AngularSplitModule, _flexible_chart_flexible_chart_module__WEBPACK_IMPORTED_MODULE_1__.FlexibleChartModule, _no_data_no_data_module__WEBPACK_IMPORTED_MODULE_0__.NoDataModule], - declarations: [_menu_stat_menu_stat_component__WEBPACK_IMPORTED_MODULE_8__.MenuStatComponent, _webshark_component__WEBPACK_IMPORTED_MODULE_4__.WebsharkComponent, _html_pipe__WEBPACK_IMPORTED_MODULE_3__.HtmlPipe], - exports: [_webshark_component__WEBPACK_IMPORTED_MODULE_4__.WebsharkComponent], - schemas: [_angular_core__WEBPACK_IMPORTED_MODULE_10__.CUSTOM_ELEMENTS_SCHEMA] -})], WebsharkModule); - -/***/ }), - -/***/ 3838: -/*!***************************************************************!*\ - !*** ./src/app/components/files-page/files-page.component.ts ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ FilesPageComponent: () => (/* binding */ FilesPageComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _files_page_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./files-page.component.html?ngResource */ 2059); -/* harmony import */ var _files_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./files-page.component.scss?ngResource */ 1380); -/* harmony import */ var _files_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_files_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @environments/environment */ 553); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - -let FilesPageComponent = class FilesPageComponent { - constructor(webSharkDataService, cdr) { - this.webSharkDataService = webSharkDataService; - this.cdr = cdr; - this.files = []; - this.isKIOSK = !!_environments_environment__WEBPACK_IMPORTED_MODULE_3__.environment.kiosk; - this.isFile = false; - this.fileChosen = new _angular_core__WEBPACK_IMPORTED_MODULE_5__.EventEmitter(); - } - ngOnInit() { - this.getFiles(); - this.webSharkDataService.updates.subscribe(({ - cm - }) => { - if (cm === 'uploaded') { - this.getFiles(); - } - }); - } - getFiles() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - if (_this.isFile) { - return; - } - const getFiles = dir => _this.webSharkDataService.getFiles(dir); - const fileData = yield getFiles(); - const mapping = (file, prefix = '/') => { - if (file.dir === true) { - const o = { - name: file.name + ` [..loading]`, - description: prefix, - children: [] - }; - getFiles(file.name).then(data => { - const arrFiles = data.files.map(i => mapping(i, file.name)); - o.name = file.name; - o.description = prefix; - o.children.push(...arrFiles); - _this.files = [..._this.files]; - _this.cdr.detectChanges(); - }); - return o; - } - file.description = prefix; - return file; - }; - const files = fileData.files.map(i => mapping(i, '')); - _this.files = [...files.filter(i => i.children), ...files.filter(i => !i.children)]; - _this.cdr.detectChanges(); - })(); - } - onFileChoose(data) { - const path = data.description ? [data.description, data.name].join('/') : data.name; - this.webSharkDataService.setCaptureFile(path); - this.isFile = true; - this.fileChosen.emit(path); - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_4__.WiregasmService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectorRef - }]; - static #_2 = this.propDecorators = { - isFile: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Input - }], - fileChosen: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Output - }] - }; -}; -FilesPageComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({ - selector: 'app-files-page', - template: _files_page_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectionStrategy.OnPush, - styles: [(_files_page_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], FilesPageComponent); - -/***/ }), - -/***/ 458: -/*!************************************************************!*\ - !*** ./src/app/components/files-page/files-page.module.ts ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ FilesPageModule: () => (/* binding */ FilesPageModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var angular_split__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! angular-split */ 6944); -/* harmony import */ var _controls_pcap_uploader_pcap_uploader_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../controls/pcap-uploader/pcap-uploader.module */ 6942); -/* harmony import */ var _controls_tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../controls/tree-filter/tree-filter.module */ 6520); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _files_page_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./files-page.component */ 3838); -/* harmony import */ var _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/material/button-toggle */ 727); -/* harmony import */ var _angular_material_divider__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material/divider */ 9400); -/* harmony import */ var _menu_menu_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../menu/menu.module */ 6426); - - - - - - - - - - -let FilesPageModule = class FilesPageModule {}; -FilesPageModule = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_6__.CommonModule, _controls_tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_1__.TreeFilterModule, _controls_pcap_uploader_pcap_uploader_module__WEBPACK_IMPORTED_MODULE_0__.PcapUploaderModule, _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_7__.MatButtonToggleModule, _angular_material_divider__WEBPACK_IMPORTED_MODULE_8__.MatDividerModule, _menu_menu_module__WEBPACK_IMPORTED_MODULE_3__.MenuModule, angular_split__WEBPACK_IMPORTED_MODULE_9__.AngularSplitModule], - declarations: [_files_page_component__WEBPACK_IMPORTED_MODULE_2__.FilesPageComponent], - exports: [_files_page_component__WEBPACK_IMPORTED_MODULE_2__.FilesPageComponent] -})], FilesPageModule); - -/***/ }), - -/***/ 6075: -/*!***************************************************!*\ - !*** ./src/app/components/menu/menu.component.ts ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MenuComponent: () => (/* binding */ MenuComponent) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _menu_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./menu.component.html?ngResource */ 2574); -/* harmony import */ var _menu_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./menu.component.scss?ngResource */ 6367); -/* harmony import */ var _menu_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_menu_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _controls_modal_resizable_modal_resizable_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../controls/modal-resizable/modal-resizable.service */ 8835); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @app/services/wiregasm.service */ 6158); - - - - - - - -let MenuComponent = class MenuComponent { - constructor(webSharkDataService, modalResizableService, cdr) { - this.webSharkDataService = webSharkDataService; - this.modalResizableService = modalResizableService; - this.cdr = cdr; - this.menuTree = null; - this.menuTreeIndex = []; - } - ngOnInit() { - this.initMenu(); - this.webSharkDataService.updates.subscribe(() => this.initMenu()); - } - onMenuClick(link, name) { - this.modalResizableService.open({ - link, - name - }); - this.cdr.detectChanges(); - } - initMenu() { - var _this = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - try { - _this.menuTreeIndex = []; - // console.log('MENU:ngOnInit()') - const { - stats = [], - nstat = [], - convs = [], - seqa = [], - taps = [], - eo = [], - srt = [], - rtd = [], - columns = [], - ftypes = [], - version = [], - follow = [] - } = yield _this.webSharkDataService.getInfo(); - const menuCollection = [ - // { name: 'Endpoints', children: [...convs] }, - // { name: 'Response Time', children: [...srt, ...rtd] }, - // { name: 'Statistics', children: [...stats, ...nstat] }, - // { name: 'Export Objects', children: [...eo] }, - { - name: 'menu', - children: [...taps, ...seqa] - }]; - _this.menuTree = menuCollection.map(menu => { - // console.log(menu.children); - menu.children = menu.children.reduce((a, i) => { - if (i.tap.split(':')[0] === 'eo') { - a[i.name] = i.tap; - return a; - } - const [category, ...name] = i.name.split('/'); - if (name.join('/')) { - if (!a[category]) { - a[category] = []; - } - a[category].push({ - name: i.name, - func: () => _this.onMenuClick(i.tap, i.name) - }); - _this.menuTreeIndex.push({ - name: i.name, - func: () => _this.onMenuClick(i.tap, i.name) - }); - // this.webSharkDataService.getTapJson(i.tap).then( d => { - // console.log({d}); - // }); - } else { - a[category] = i.tap; - } - return a; - }, {}); - menu.children = Object.entries(menu.children).map(([key, value]) => { - if (typeof value === 'string') { - // this.webSharkDataService.getTapJson(value).then( d => { - // console.log({d}); - // }); - _this.menuTreeIndex.push({ - name: key, - func: () => _this.onMenuClick(value, key) - }); - return { - name: key, - func: () => _this.onMenuClick(value, key) - }; - } - return { - name: key, - children: value - }; - }); - return menu; - }); - // console.log('menu', { menuCollection, menuTree: this.menuTree }); - _this.cdr.detectChanges(); - } catch (err) { - _this.menuTree = []; - console.error(err); - } - })(); - } - onSelected(event) { - const menuItem = this.menuTreeIndex.find(i => i.name === event.name); - menuItem?.func(); - // console.log(event, this.menuTreeIndex.find((i: any) => i.name === event.name)) - } - static #_ = this.ctorParameters = () => [{ - type: _app_services_wiregasm_service__WEBPACK_IMPORTED_MODULE_4__.WiregasmService - }, { - type: _controls_modal_resizable_modal_resizable_service__WEBPACK_IMPORTED_MODULE_3__.ModalResizableService - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectorRef - }]; -}; -MenuComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({ - selector: 'app-menu', - template: _menu_component_html_ngResource__WEBPACK_IMPORTED_MODULE_1__, - changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_5__.ChangeDetectionStrategy.OnPush, - styles: [(_menu_component_scss_ngResource__WEBPACK_IMPORTED_MODULE_2___default())] -})], MenuComponent); - -/***/ }), - -/***/ 6426: -/*!************************************************!*\ - !*** ./src/app/components/menu/menu.module.ts ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MenuModule: () => (/* binding */ MenuModule) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _controls_no_data_no_data_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../controls/no-data/no-data.module */ 5284); -/* harmony import */ var _controls_tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../controls/tree-filter/tree-filter.module */ 6520); -/* harmony import */ var _angular_material_menu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/material/menu */ 8128); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _menu_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./menu.component */ 6075); -/* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/material/button */ 895); -/* harmony import */ var _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material/button-toggle */ 727); - - - - - - - - - -let MenuModule = class MenuModule {}; -MenuModule = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.NgModule)({ - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_5__.CommonModule, _angular_material_menu__WEBPACK_IMPORTED_MODULE_6__.MatMenuModule, _angular_material_button__WEBPACK_IMPORTED_MODULE_7__.MatButtonModule, _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_8__.MatButtonToggleModule, _controls_tree_filter_tree_filter_module__WEBPACK_IMPORTED_MODULE_1__.TreeFilterModule, _controls_no_data_no_data_module__WEBPACK_IMPORTED_MODULE_0__.NoDataModule], - declarations: [_menu_component__WEBPACK_IMPORTED_MODULE_2__.MenuComponent], - exports: [_menu_component__WEBPACK_IMPORTED_MODULE_2__.MenuComponent] -})], MenuModule); - -/***/ }), - -/***/ 1142: -/*!*********************************************!*\ - !*** ./src/app/helper/error.interceptor.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ErrorInterceptor: () => (/* binding */ ErrorInterceptor) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ 3252); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ 2389); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ 7947); -/* harmony import */ var _app_components_controls_alert_alert_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @app/components/controls/alert/alert.service */ 611); - - - - -// import { AlertService } from '../services/alert.service'; - - -let ErrorInterceptor = class ErrorInterceptor { - constructor(alertService, router) { - this.alertService = alertService; - this.router = router; - } - intercept(request, next) { - return next.handle(request).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_1__.catchError)(err => { - if (err.status === 401 && request.url.indexOf('/proxy') === -1) { - // auto logout if 401 response returned from api - const snapshotUrl = this.router.routerState.snapshot.url; - if (!snapshotUrl.match('(system:login)')) { - this.router.navigate([{ - outlets: { - primary: null, - system: 'login' - } - }], { - queryParams: { - returnUrl: snapshotUrl - } - }); - } - } - const error = err.error.message || err.statusText; - if (err.error.message !== 'invalid or expired jwt') { - this.alertService.error(error + '\n' + JSON.stringify(err)); - } - return (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.throwError)(error); - })); - } - static #_ = this.ctorParameters = () => [{ - type: _app_components_controls_alert_alert_service__WEBPACK_IMPORTED_MODULE_0__.AlertService - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_3__.Router - }]; -}; -ErrorInterceptor = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable)()], ErrorInterceptor); - -/***/ }), - -/***/ 9978: -/*!*************************************!*\ - !*** ./src/app/helper/functions.ts ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Functions: () => (/* binding */ Functions), -/* harmony export */ hash: () => (/* binding */ hash) -/* harmony export */ }); -// import { Md5 } from 'ts-md5/dist/md5'; -class Functions { - static JSON_parse(jsonString) { - try { - return JSON.parse(jsonString); - } catch (e) { - return null; - } - } - static cloneObject(src) { - try { - return JSON.parse(JSON.stringify(src)); - } catch (err) {} - return src; - } - static md5object(obj) { - try { - return Functions.md5(JSON.stringify(obj) || ''); - } catch (err) { - return Functions.md5(''); - } - } - static md5(str) { - str = str || ''; - return hash(str) + ''; - } - static emitWindowResize() { - setTimeout(() => { - window.dispatchEvent(new Event('resize')); - }); - } -} -function hash(str, lenHash = 32) { - lenHash = lenHash || 32; - str = str || ""; - let ar = str.split('').map(a => a.charCodeAt(0)), - s2alength = ar.length || 1, - i = ar.length ? ar.reduce((p, c) => p + c) : 1, - s = "", - A, - B, - k = 0, - tan = Math.tan; - while (s.length < lenHash) { - A = ar[k++ % s2alength] || 0.5; - B = ar[k++ % s2alength ^ lenHash] || 1.5 ^ lenHash; - i = i + (A ^ B) % lenHash; - s += tan(i * B / A).toString(16).split('.')[1].slice(0, 10); - } - return s.slice(0, lenHash); -} - -/***/ }), - -/***/ 1820: -/*!************************************************!*\ - !*** ./src/app/services/hightlight.service.ts ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HighlightService: () => (/* binding */ HighlightService) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ 8071); - - - -let HighlightService = class HighlightService { - constructor() { - this.bs = new rxjs__WEBPACK_IMPORTED_MODULE_0__.BehaviorSubject([0, 0]); - this.listener = this.bs.asObservable(); - } - set(hArray) { - this.bs.next(hArray); - } - static #_ = this.ctorParameters = () => []; -}; -HighlightService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({ - providedIn: 'root' -})], HighlightService); - -/***/ }), - -/***/ 6158: -/*!**********************************************!*\ - !*** ./src/app/services/wiregasm.service.ts ***! - \**********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WiregasmService: () => (/* binding */ WiregasmService) -/* harmony export */ }); -/* harmony import */ var C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _app_helper_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @app/helper/functions */ 9978); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ 8071); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ 2235); - - - - - -class StaticData { - static #_ = this.captureFile = ''; - static #_2 = this.filter = ''; -} -let WiregasmService = class WiregasmService { - constructor() { - var _this = this; - this.bs = new rxjs__WEBPACK_IMPORTED_MODULE_2__.BehaviorSubject(null); - this.isParsingProcess = false; - this.behavior = new rxjs__WEBPACK_IMPORTED_MODULE_2__.BehaviorSubject({}); - this.updates = new rxjs__WEBPACK_IMPORTED_MODULE_2__.BehaviorSubject({}); - this.blobFile = new Blob([]); - this._hostsBuffer = []; - this.allFrameDataArray = []; - this.allFrameDataArrayForFilter = []; - if (typeof Worker !== 'undefined') { - this.worker = new Worker(__webpack_require__.tu(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u(166), __webpack_require__.b))); - this.worker.onmessage = /*#__PURE__*/function () { - var _ref = (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* ({ - data - }) { - if (typeof data === 'object' && data?.type === 'processed') { - _this._Frames = data.data.table; - _this._frame1 = data.data.frame1; - const allFrames = yield _this.getAllFrameData(); - console.log('done parse all this._Frames===>', _this._Frames); - console.log('done parse all frames===>', allFrames); - console.log('this.allFrameDataArray', _this.allFrameDataArray); - console.log('this.allFrameDataArrayForFilter', _this.allFrameDataArrayForFilter); - _this.updates.next(data); - } - _this.bs.next(data); - }); - return function (_x) { - return _ref.apply(this, arguments); - }; - }(); - } - } - listen() { - return this.bs.asObservable(); - } - send(data) { - var _this2 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - _this2.worker.postMessage(data); - })(); - } - getFrameNumberByFilter(filterText = '') { - if (filterText === '') { - return []; - } - const outArray = []; - this.allFrameDataArrayForFilter.forEach((i, k) => { - if (i.includes(filterText)) { - outArray.push(k); - } - }); - console.log('getFrameNumberByFilter::', filterText, outArray); - return outArray; - } - setFilter(filter) { - console.warn('setFilter', filter); - // 'filter='+encodeURIComponent(`sip.Via.received == "195.138.93.233"`) - StaticData.filter = filter; - this.behavior.next({}); - } - getFilter() { - console.warn('getFilter', StaticData.filter); - return StaticData.filter; - } - setCaptureFile(fileName) { - console.warn('setCaptureFile', fileName); - StaticData.captureFile = fileName; - location.hash = '#' + (0,_app_helper_functions__WEBPACK_IMPORTED_MODULE_1__.hash)(fileName); - this.behavior.next({}); - } - getCapture() { - console.warn('getCapture', StaticData.captureFile); - return StaticData.captureFile; - } - httpGet(command, params = null) { - console.warn('httpGet', command, params); - return new Promise((reason, reject) => { - reason({}); - }); - // if (typeof params === 'string') { - // return this.getBufferGate(`${this.url}?method=${command}&${params}`).toPromise(); - // } - // if (!this.getCapture()) { - // return new Promise((reason, reject) => { - // reject({ error: 'Capture file is unset!' }); - // }) - // } - // const strParams = params ? this.params(command, params) : 'method=' + command; - // return this.getBufferGate(`${this.url}?${strParams}`).toPromise(); - } - - getInfo() { - return this.httpGet('info'); - } - getFiles(dir = '') { - console.warn('getFiles', dir); - return new Promise((reason, reject) => { - reason({ - files: [] //[{ name: 'test.pcap', bytes: 1 }] - }); - }); - // return this.httpGet('files', dir && 'dir=' + encodeURIComponent('/' + dir)); - } - - getFrames(limit = 120) { - console.warn('getFrames', limit); - return new Promise((reason, reject) => { - if (this._Frames) { - reason(this._Frames); - } else { - reject({ - msg: 'no data' - }); - } - }); - // if (limit === 0) { - // return this.httpGet('frames', {}); - // } - // return this.httpGet('frames', { limit }); - } - - getFlowItems() { - const out = []; - this.allFrameDataArrayForFilter.forEach((item, k) => { - const outItem = item.filter(j => j.includes('ip.src') || j.includes('ip.dst')); - const nn = outItem.map(i => i.split(' == ')[1]); - const n = nn.map(i => this._hostsBuffer.findIndex(j => j == i)); - let t = item.filter(j => j.includes('frame.time == ')).join('').split(' == ')[1]; - t = new Date(t).toLocaleTimeString() + '.' + new Date(t).getMilliseconds(); - out.push({ - c: this._Frames[k].colData[6], - t, - n, - pn: ['#000'] - }); - console.log(n, outItem); - }); - return out; - } - getHosts() { - if (this._hostsBuffer.length == 0) { - this._hostsBuffer = [].concat([], ...this.allFrameDataArrayForFilter.map(i => { - const out = i.filter(j => j.includes('ip.src') || j.includes('ip.dst')); - return out.map(i => i.split(' == ')[1]); - })).sort().filter((i, k, a) => a[k - 1] != i); - } - return this._hostsBuffer; - } - parseFrame(arrData, isForFilter = true) { - const out = {}; - const outFilter = []; - const parseTree = arr => { - arr.forEach(i => { - const [key, val] = i.filter.split(' == '); - out[key] = val; - outFilter.push(i.filter); - if (i.tree) { - parseTree(i.tree || []); - } - }); - }; - parseTree(arrData); - return isForFilter ? outFilter : out; - } - getAllFrameData(n = 1) { - var _this3 = this; - return (0,C_work_wasmshark_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const out = yield _this3.getFrameData(n); - // console.log({out}) - _this3.allFrameDataArray.push(out); - _this3.allFrameDataArrayForFilter.push(_this3.parseFrame(out?.tree || [])); - // console.log('frames => ', this._Frames); - _this3.bs.next({ - isParsing: true, - parsingProgress: n / +_this3._Frames.length * 100 - }); - if (n < +_this3._Frames.length) { - return yield _this3.getAllFrameData(n + 1); - } else { - return _this3.allFrameDataArray; - } - })(); - } - getFrameData(frameId) { - // console.warn('getFrameData', frameId) - // this._frame1 - return new Promise((reason, reject) => { - if (this.allFrameDataArray[frameId - 1]) { - console.log('frame exist', frameId - 1, this.allFrameDataArray[frameId - 1]); - reason(this.allFrameDataArray[frameId - 1]); - return; - } - this.worker.onmessage = data => { - // console.log('getFrameData', { data: data.data.data.frame1 }) - reason(data.data.data.frame1); - }; - this.worker.postMessage({ - type: "getFrame", - frameId - }); - }); - } - getTapJson(tapID) { - console.warn('getTapJson', tapID); - return this.httpGet('tap', { - tap0: tapID - }); - } - getRTPStreamTap(rtpData) { - console.warn('getRTPStreamTap', rtpData); - const { - saddr, - sport, - daddr, - dport, - ssrc - } = rtpData; - const tap0 = 'rtp-analyse:' + [saddr, sport, daddr, dport, ssrc.toString(16)].join('_'); - return this.httpGet('tap', { - tap0 - }); - /** - * data = { - "ssrc":1289913356, - "payload":"g711A", - "saddr":"10.0.131.72", - "sport":5010, - "daddr":"10.0.131.70", - "dport":5014, - "pkts":555, - "max_delta":23.220000, - "max_jitter":2.800501, - "mean_jitter":2.687978, - "expectednr":555, - "totalnr":555, - "problem":false, - "ipver":4 - } - */ - } - - postFile(fileToUpload, isDataTimeNow) { - console.warn('postFile', fileToUpload); - const reader = new FileReader(); - reader.onload = e => { - const arrayBuffer = e.target.result; - // Создаем Blob из ArrayBuffer - const blob = new Blob([arrayBuffer], { - type: fileToUpload.type - }); - // Теперь переменная blob содержит бинарные данные файла - this.blobFile = blob; - }; - reader.readAsArrayBuffer(fileToUpload); - return new rxjs__WEBPACK_IMPORTED_MODULE_3__.Observable(observe => { - // worker.postMessage({ type: "process", file: file }); - this.worker.postMessage({ - type: "process", - file: fileToUpload - }); - observe.next({}); - observe.complete(); - }); - // const formData: FormData = new FormData(); - // formData.append('fileKey', fileToUpload, fileToUpload.name); - // const url = isDataTimeNow ? this.urlUpload + '/now' : this.urlUpload; - // return this.http.post(url, formData).pipe(map(() => { - // this.setCaptureFile(fileToUpload.name); - // this.behavior.next({ cm: 'uploaded' }); - // })); - } - static #_ = this.ctorParameters = () => []; -}; -WiregasmService = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable)({ - providedIn: 'root' -})], WiregasmService); - -/***/ }), - -/***/ 553: -/*!*****************************************!*\ - !*** ./src/environments/environment.ts ***! - \*****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ environment: () => (/* binding */ environment) -/* harmony export */ }); -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. -const environment = { - production: false, - apiUrl: '/webshark/', - kiosk: false -}; -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. - -/***/ }), - -/***/ 4913: -/*!*********************!*\ - !*** ./src/main.ts ***! - \*********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ 4737); -/* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/app.module */ 8629); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environments/environment */ 553); - - - - -if (_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.production) { - (0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.enableProdMode)(); -} -(0,_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__.platformBrowserDynamic)().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_0__.AppModule).catch(err => console.error(err)); - -/***/ }), - -/***/ 1386: -/*!*****************************************************!*\ - !*** ./node_modules/css-loader/dist/runtime/api.js ***! - \*****************************************************/ -/***/ ((module) => { - -"use strict"; - - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -module.exports = function (cssWithMappingToString) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = ""; - var needLayer = typeof item[5] !== "undefined"; - if (item[4]) { - content += "@supports (".concat(item[4], ") {"); - } - if (item[2]) { - content += "@media ".concat(item[2], " {"); - } - if (needLayer) { - content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); - } - content += cssWithMappingToString(item); - if (needLayer) { - content += "}"; - } - if (item[2]) { - content += "}"; - } - if (item[4]) { - content += "}"; - } - return content; - }).join(""); - }; - - // import a list of modules into the list - list.i = function i(modules, media, dedupe, supports, layer) { - if (typeof modules === "string") { - modules = [[null, modules, undefined]]; - } - var alreadyImportedModules = {}; - if (dedupe) { - for (var k = 0; k < this.length; k++) { - var id = this[k][0]; - if (id != null) { - alreadyImportedModules[id] = true; - } - } - } - for (var _k = 0; _k < modules.length; _k++) { - var item = [].concat(modules[_k]); - if (dedupe && alreadyImportedModules[item[0]]) { - continue; - } - if (typeof layer !== "undefined") { - if (typeof item[5] === "undefined") { - item[5] = layer; - } else { - item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); - item[5] = layer; - } - } - if (media) { - if (!item[2]) { - item[2] = media; - } else { - item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); - item[2] = media; - } - } - if (supports) { - if (!item[4]) { - item[4] = "".concat(supports); - } else { - item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); - item[4] = supports; - } - } - list.push(item); - } - }; - return list; -}; - -/***/ }), - -/***/ 2487: -/*!************************************************************!*\ - !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***! - \************************************************************/ -/***/ ((module) => { - -"use strict"; - - -module.exports = function (item) { - var content = item[1]; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - if (typeof btoa === "function") { - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); - var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); - var sourceMapping = "/*# ".concat(data, " */"); - return [content].concat([sourceMapping]).join("\n"); - } - return [content].join("\n"); -}; - -/***/ }), - -/***/ 8071: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ BehaviorSubject: () => (/* binding */ BehaviorSubject) -/* harmony export */ }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subject */ 2513); - -class BehaviorSubject extends _Subject__WEBPACK_IMPORTED_MODULE_0__.Subject { - constructor(_value) { - super(); - this._value = _value; - } - get value() { - return this.getValue(); - } - _subscribe(subscriber) { - const subscription = super._subscribe(subscriber); - !subscription.closed && subscriber.next(this._value); - return subscription; - } - getValue() { - const { - hasError, - thrownError, - _value - } = this; - if (hasError) { - throw thrownError; - } - this._throwIfClosed(); - return _value; - } - next(value) { - super.next(this._value = value); - } -} - -/***/ }), - -/***/ 6959: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/NotificationFactories.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ COMPLETE_NOTIFICATION: () => (/* binding */ COMPLETE_NOTIFICATION), -/* harmony export */ createNotification: () => (/* binding */ createNotification), -/* harmony export */ errorNotification: () => (/* binding */ errorNotification), -/* harmony export */ nextNotification: () => (/* binding */ nextNotification) -/* harmony export */ }); -const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))(); -function errorNotification(error) { - return createNotification('E', undefined, error); -} -function nextNotification(value) { - return createNotification('N', value, undefined); -} -function createNotification(kind, value, error) { - return { - kind, - value, - error - }; -} - -/***/ }), - -/***/ 2235: -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/Observable.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Observable: () => (/* binding */ Observable) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscriber */ 8559); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Subscription */ 1523); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/observable */ 4373); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/pipe */ 2476); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ 5445); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/isFunction */ 2602); -/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/errorContext */ 575); - - - - - - - -class Observable { - constructor(subscribe) { - if (subscribe) { - this._subscribe = subscribe; - } - } - lift(operator) { - const observable = new Observable(); - observable.source = this; - observable.operator = operator; - return observable; - } - subscribe(observerOrNext, error, complete) { - const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new _Subscriber__WEBPACK_IMPORTED_MODULE_0__.SafeSubscriber(observerOrNext, error, complete); - (0,_util_errorContext__WEBPACK_IMPORTED_MODULE_1__.errorContext)(() => { - const { - operator, - source - } = this; - subscriber.add(operator ? operator.call(subscriber, source) : source ? this._subscribe(subscriber) : this._trySubscribe(subscriber)); - }); - return subscriber; - } - _trySubscribe(sink) { - try { - return this._subscribe(sink); - } catch (err) { - sink.error(err); - } - } - forEach(next, promiseCtor) { - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor((resolve, reject) => { - const subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_0__.SafeSubscriber({ - next: value => { - try { - next(value); - } catch (err) { - reject(err); - subscriber.unsubscribe(); - } - }, - error: reject, - complete: resolve - }); - this.subscribe(subscriber); - }); - } - _subscribe(subscriber) { - var _a; - return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); - } - [_symbol_observable__WEBPACK_IMPORTED_MODULE_2__.observable]() { - return this; - } - pipe(...operations) { - return (0,_util_pipe__WEBPACK_IMPORTED_MODULE_3__.pipeFromArray)(operations)(this); - } - toPromise(promiseCtor) { - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor((resolve, reject) => { - let value; - this.subscribe(x => value = x, err => reject(err), () => resolve(value)); - }); - } -} -Observable.create = subscribe => { - return new Observable(subscribe); -}; -function getPromiseCtor(promiseCtor) { - var _a; - return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : _config__WEBPACK_IMPORTED_MODULE_4__.config.Promise) !== null && _a !== void 0 ? _a : Promise; -} -function isObserver(value) { - return value && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_5__.isFunction)(value.next) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_5__.isFunction)(value.error) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_5__.isFunction)(value.complete); -} -function isSubscriber(value) { - return value && value instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber || isObserver(value) && (0,_Subscription__WEBPACK_IMPORTED_MODULE_6__.isSubscription)(value); -} - -/***/ }), - -/***/ 5400: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/ReplaySubject.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ReplaySubject: () => (/* binding */ ReplaySubject) -/* harmony export */ }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subject */ 2513); -/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scheduler/dateTimestampProvider */ 6926); - - -class ReplaySubject extends _Subject__WEBPACK_IMPORTED_MODULE_0__.Subject { - constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_1__.dateTimestampProvider) { - super(); - this._bufferSize = _bufferSize; - this._windowTime = _windowTime; - this._timestampProvider = _timestampProvider; - this._buffer = []; - this._infiniteTimeWindow = true; - this._infiniteTimeWindow = _windowTime === Infinity; - this._bufferSize = Math.max(1, _bufferSize); - this._windowTime = Math.max(1, _windowTime); - } - next(value) { - const { - isStopped, - _buffer, - _infiniteTimeWindow, - _timestampProvider, - _windowTime - } = this; - if (!isStopped) { - _buffer.push(value); - !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime); - } - this._trimBuffer(); - super.next(value); - } - _subscribe(subscriber) { - this._throwIfClosed(); - this._trimBuffer(); - const subscription = this._innerSubscribe(subscriber); - const { - _infiniteTimeWindow, - _buffer - } = this; - const copy = _buffer.slice(); - for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) { - subscriber.next(copy[i]); - } - this._checkFinalizedStatuses(subscriber); - return subscription; - } - _trimBuffer() { - const { - _bufferSize, - _timestampProvider, - _buffer, - _infiniteTimeWindow - } = this; - const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize; - _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize); - if (!_infiniteTimeWindow) { - const now = _timestampProvider.now(); - let last = 0; - for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) { - last = i; - } - last && _buffer.splice(0, last + 1); - } - } -} - -/***/ }), - -/***/ 5161: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/Scheduler.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Scheduler: () => (/* binding */ Scheduler) -/* harmony export */ }); -/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scheduler/dateTimestampProvider */ 6926); - -class Scheduler { - constructor(schedulerActionCtor, now = Scheduler.now) { - this.schedulerActionCtor = schedulerActionCtor; - this.now = now; - } - schedule(work, delay = 0, state) { - return new this.schedulerActionCtor(this, work).schedule(state, delay); - } -} -Scheduler.now = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__.dateTimestampProvider.now; - -/***/ }), - -/***/ 2513: -/*!********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/Subject.js ***! - \********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AnonymousSubject: () => (/* binding */ AnonymousSubject), -/* harmony export */ Subject: () => (/* binding */ Subject) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Observable */ 2235); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ 1523); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ 1558); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/arrRemove */ 5559); -/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/errorContext */ 575); - - - - - -class Subject extends _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable { - constructor() { - super(); - this.closed = false; - this.currentObservers = null; - this.observers = []; - this.isStopped = false; - this.hasError = false; - this.thrownError = null; - } - lift(operator) { - const subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - } - _throwIfClosed() { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_1__.ObjectUnsubscribedError(); - } - } - next(value) { - (0,_util_errorContext__WEBPACK_IMPORTED_MODULE_2__.errorContext)(() => { - this._throwIfClosed(); - if (!this.isStopped) { - if (!this.currentObservers) { - this.currentObservers = Array.from(this.observers); - } - for (const observer of this.currentObservers) { - observer.next(value); - } - } - }); - } - error(err) { - (0,_util_errorContext__WEBPACK_IMPORTED_MODULE_2__.errorContext)(() => { - this._throwIfClosed(); - if (!this.isStopped) { - this.hasError = this.isStopped = true; - this.thrownError = err; - const { - observers - } = this; - while (observers.length) { - observers.shift().error(err); - } - } - }); - } - complete() { - (0,_util_errorContext__WEBPACK_IMPORTED_MODULE_2__.errorContext)(() => { - this._throwIfClosed(); - if (!this.isStopped) { - this.isStopped = true; - const { - observers - } = this; - while (observers.length) { - observers.shift().complete(); - } - } - }); - } - unsubscribe() { - this.isStopped = this.closed = true; - this.observers = this.currentObservers = null; - } - get observed() { - var _a; - return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; - } - _trySubscribe(subscriber) { - this._throwIfClosed(); - return super._trySubscribe(subscriber); - } - _subscribe(subscriber) { - this._throwIfClosed(); - this._checkFinalizedStatuses(subscriber); - return this._innerSubscribe(subscriber); - } - _innerSubscribe(subscriber) { - const { - hasError, - isStopped, - observers - } = this; - if (hasError || isStopped) { - return _Subscription__WEBPACK_IMPORTED_MODULE_3__.EMPTY_SUBSCRIPTION; - } - this.currentObservers = null; - observers.push(subscriber); - return new _Subscription__WEBPACK_IMPORTED_MODULE_3__.Subscription(() => { - this.currentObservers = null; - (0,_util_arrRemove__WEBPACK_IMPORTED_MODULE_4__.arrRemove)(observers, subscriber); - }); - } - _checkFinalizedStatuses(subscriber) { - const { - hasError, - thrownError, - isStopped - } = this; - if (hasError) { - subscriber.error(thrownError); - } else if (isStopped) { - subscriber.complete(); - } - } - asObservable() { - const observable = new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(); - observable.source = this; - return observable; - } -} -Subject.create = (destination, source) => { - return new AnonymousSubject(destination, source); -}; -class AnonymousSubject extends Subject { - constructor(destination, source) { - super(); - this.destination = destination; - this.source = source; - } - next(value) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); - } - error(err) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); - } - complete() { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); - } - _subscribe(subscriber) { - var _a, _b; - return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : _Subscription__WEBPACK_IMPORTED_MODULE_3__.EMPTY_SUBSCRIPTION; - } -} - -/***/ }), - -/***/ 8559: -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/Subscriber.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EMPTY_OBSERVER: () => (/* binding */ EMPTY_OBSERVER), -/* harmony export */ SafeSubscriber: () => (/* binding */ SafeSubscriber), -/* harmony export */ Subscriber: () => (/* binding */ Subscriber) -/* harmony export */ }); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/isFunction */ 2602); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscription */ 1523); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config */ 5445); -/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/reportUnhandledError */ 6929); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/noop */ 2707); -/* harmony import */ var _NotificationFactories__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NotificationFactories */ 6959); -/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./scheduler/timeoutProvider */ 8411); -/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/errorContext */ 575); - - - - - - - - -class Subscriber extends _Subscription__WEBPACK_IMPORTED_MODULE_0__.Subscription { - constructor(destination) { - super(); - this.isStopped = false; - if (destination) { - this.destination = destination; - if ((0,_Subscription__WEBPACK_IMPORTED_MODULE_0__.isSubscription)(destination)) { - destination.add(this); - } - } else { - this.destination = EMPTY_OBSERVER; - } - } - static create(next, error, complete) { - return new SafeSubscriber(next, error, complete); - } - next(value) { - if (this.isStopped) { - handleStoppedNotification((0,_NotificationFactories__WEBPACK_IMPORTED_MODULE_1__.nextNotification)(value), this); - } else { - this._next(value); - } - } - error(err) { - if (this.isStopped) { - handleStoppedNotification((0,_NotificationFactories__WEBPACK_IMPORTED_MODULE_1__.errorNotification)(err), this); - } else { - this.isStopped = true; - this._error(err); - } - } - complete() { - if (this.isStopped) { - handleStoppedNotification(_NotificationFactories__WEBPACK_IMPORTED_MODULE_1__.COMPLETE_NOTIFICATION, this); - } else { - this.isStopped = true; - this._complete(); - } - } - unsubscribe() { - if (!this.closed) { - this.isStopped = true; - super.unsubscribe(); - this.destination = null; - } - } - _next(value) { - this.destination.next(value); - } - _error(err) { - try { - this.destination.error(err); - } finally { - this.unsubscribe(); - } - } - _complete() { - try { - this.destination.complete(); - } finally { - this.unsubscribe(); - } - } -} -const _bind = Function.prototype.bind; -function bind(fn, thisArg) { - return _bind.call(fn, thisArg); -} -class ConsumerObserver { - constructor(partialObserver) { - this.partialObserver = partialObserver; - } - next(value) { - const { - partialObserver - } = this; - if (partialObserver.next) { - try { - partialObserver.next(value); - } catch (error) { - handleUnhandledError(error); - } - } - } - error(err) { - const { - partialObserver - } = this; - if (partialObserver.error) { - try { - partialObserver.error(err); - } catch (error) { - handleUnhandledError(error); - } - } else { - handleUnhandledError(err); - } - } - complete() { - const { - partialObserver - } = this; - if (partialObserver.complete) { - try { - partialObserver.complete(); - } catch (error) { - handleUnhandledError(error); - } - } - } -} -class SafeSubscriber extends Subscriber { - constructor(observerOrNext, error, complete) { - super(); - let partialObserver; - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observerOrNext) || !observerOrNext) { - partialObserver = { - next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined, - error: error !== null && error !== void 0 ? error : undefined, - complete: complete !== null && complete !== void 0 ? complete : undefined - }; - } else { - let context; - if (this && _config__WEBPACK_IMPORTED_MODULE_3__.config.useDeprecatedNextContext) { - context = Object.create(observerOrNext); - context.unsubscribe = () => this.unsubscribe(); - partialObserver = { - next: observerOrNext.next && bind(observerOrNext.next, context), - error: observerOrNext.error && bind(observerOrNext.error, context), - complete: observerOrNext.complete && bind(observerOrNext.complete, context) - }; - } else { - partialObserver = observerOrNext; - } - } - this.destination = new ConsumerObserver(partialObserver); - } -} -function handleUnhandledError(error) { - if (_config__WEBPACK_IMPORTED_MODULE_3__.config.useDeprecatedSynchronousErrorHandling) { - (0,_util_errorContext__WEBPACK_IMPORTED_MODULE_4__.captureError)(error); - } else { - (0,_util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_5__.reportUnhandledError)(error); - } -} -function defaultErrorHandler(err) { - throw err; -} -function handleStoppedNotification(notification, subscriber) { - const { - onStoppedNotification - } = _config__WEBPACK_IMPORTED_MODULE_3__.config; - onStoppedNotification && _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_6__.timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber)); -} -const EMPTY_OBSERVER = { - closed: true, - next: _util_noop__WEBPACK_IMPORTED_MODULE_7__.noop, - error: defaultErrorHandler, - complete: _util_noop__WEBPACK_IMPORTED_MODULE_7__.noop -}; - -/***/ }), - -/***/ 1523: -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/Subscription.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EMPTY_SUBSCRIPTION: () => (/* binding */ EMPTY_SUBSCRIPTION), -/* harmony export */ Subscription: () => (/* binding */ Subscription), -/* harmony export */ isSubscription: () => (/* binding */ isSubscription) -/* harmony export */ }); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/isFunction */ 2602); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/UnsubscriptionError */ 101); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/arrRemove */ 5559); - - - -class Subscription { - constructor(initialTeardown) { - this.initialTeardown = initialTeardown; - this.closed = false; - this._parentage = null; - this._finalizers = null; - } - unsubscribe() { - let errors; - if (!this.closed) { - this.closed = true; - const { - _parentage - } = this; - if (_parentage) { - this._parentage = null; - if (Array.isArray(_parentage)) { - for (const parent of _parentage) { - parent.remove(this); - } - } else { - _parentage.remove(this); - } - } - const { - initialTeardown: initialFinalizer - } = this; - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(initialFinalizer)) { - try { - initialFinalizer(); - } catch (e) { - errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError ? e.errors : [e]; - } - } - const { - _finalizers - } = this; - if (_finalizers) { - this._finalizers = null; - for (const finalizer of _finalizers) { - try { - execFinalizer(finalizer); - } catch (err) { - errors = errors !== null && errors !== void 0 ? errors : []; - if (err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError) { - errors = [...errors, ...err.errors]; - } else { - errors.push(err); - } - } - } - } - if (errors) { - throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError(errors); - } - } - } - add(teardown) { - var _a; - if (teardown && teardown !== this) { - if (this.closed) { - execFinalizer(teardown); - } else { - if (teardown instanceof Subscription) { - if (teardown.closed || teardown._hasParent(this)) { - return; - } - teardown._addParent(this); - } - (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); - } - } - } - _hasParent(parent) { - const { - _parentage - } = this; - return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent); - } - _addParent(parent) { - const { - _parentage - } = this; - this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; - } - _removeParent(parent) { - const { - _parentage - } = this; - if (_parentage === parent) { - this._parentage = null; - } else if (Array.isArray(_parentage)) { - (0,_util_arrRemove__WEBPACK_IMPORTED_MODULE_2__.arrRemove)(_parentage, parent); - } - } - remove(teardown) { - const { - _finalizers - } = this; - _finalizers && (0,_util_arrRemove__WEBPACK_IMPORTED_MODULE_2__.arrRemove)(_finalizers, teardown); - if (teardown instanceof Subscription) { - teardown._removeParent(this); - } - } -} -Subscription.EMPTY = (() => { - const empty = new Subscription(); - empty.closed = true; - return empty; -})(); -const EMPTY_SUBSCRIPTION = Subscription.EMPTY; -function isSubscription(value) { - return value instanceof Subscription || value && 'closed' in value && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(value.remove) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(value.add) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(value.unsubscribe); -} -function execFinalizer(finalizer) { - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(finalizer)) { - finalizer(); - } else { - finalizer.unsubscribe(); - } -} - -/***/ }), - -/***/ 5445: -/*!*******************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/config.js ***! - \*******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ config: () => (/* binding */ config) -/* harmony export */ }); -const config = { - onUnhandledError: null, - onStoppedNotification: null, - Promise: undefined, - useDeprecatedSynchronousErrorHandling: false, - useDeprecatedNextContext: false -}; - -/***/ }), - -/***/ 3249: -/*!*********************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js ***! - \*********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ConnectableObservable: () => (/* binding */ ConnectableObservable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ 1523); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../operators/refCount */ 2371); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/OperatorSubscriber */ 5678); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); - - - - - -class ConnectableObservable extends _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable { - constructor(source, subjectFactory) { - super(); - this.source = source; - this.subjectFactory = subjectFactory; - this._subject = null; - this._refCount = 0; - this._connection = null; - if ((0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.hasLift)(source)) { - this.lift = source.lift; - } - } - _subscribe(subscriber) { - return this.getSubject().subscribe(subscriber); - } - getSubject() { - const subject = this._subject; - if (!subject || subject.isStopped) { - this._subject = this.subjectFactory(); - } - return this._subject; - } - _teardown() { - this._refCount = 0; - const { - _connection - } = this; - this._subject = this._connection = null; - _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); - } - connect() { - let connection = this._connection; - if (!connection) { - connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_2__.Subscription(); - const subject = this.getSubject(); - connection.add(this.source.subscribe((0,_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__.createOperatorSubscriber)(subject, undefined, () => { - this._teardown(); - subject.complete(); - }, err => { - this._teardown(); - subject.error(err); - }, () => this._teardown()))); - if (connection.closed) { - this._connection = null; - connection = _Subscription__WEBPACK_IMPORTED_MODULE_2__.Subscription.EMPTY; - } - } - return connection; - } - refCount() { - return (0,_operators_refCount__WEBPACK_IMPORTED_MODULE_4__.refCount)()(this); - } -} - -/***/ }), - -/***/ 3839: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ combineLatest: () => (/* binding */ combineLatest), -/* harmony export */ combineLatestInit: () => (/* binding */ combineLatestInit) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/argsArgArrayOrObject */ 7346); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./from */ 6231); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/identity */ 204); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/mapOneOrManyArgs */ 7825); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/args */ 6190); -/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/createObject */ 6118); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../operators/OperatorSubscriber */ 5678); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/executeSchedule */ 9701); - - - - - - - - - -function combineLatest(...args) { - const scheduler = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popScheduler)(args); - const resultSelector = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popResultSelector)(args); - const { - args: observables, - keys - } = (0,_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__.argsArgArrayOrObject)(args); - if (observables.length === 0) { - return (0,_from__WEBPACK_IMPORTED_MODULE_2__.from)([], scheduler); - } - const result = new _Observable__WEBPACK_IMPORTED_MODULE_3__.Observable(combineLatestInit(observables, scheduler, keys ? values => (0,_util_createObject__WEBPACK_IMPORTED_MODULE_4__.createObject)(keys, values) : _util_identity__WEBPACK_IMPORTED_MODULE_5__.identity)); - return resultSelector ? result.pipe((0,_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__.mapOneOrManyArgs)(resultSelector)) : result; -} -function combineLatestInit(observables, scheduler, valueTransform = _util_identity__WEBPACK_IMPORTED_MODULE_5__.identity) { - return subscriber => { - maybeSchedule(scheduler, () => { - const { - length - } = observables; - const values = new Array(length); - let active = length; - let remainingFirstValues = length; - for (let i = 0; i < length; i++) { - maybeSchedule(scheduler, () => { - const source = (0,_from__WEBPACK_IMPORTED_MODULE_2__.from)(observables[i], scheduler); - let hasFirstValue = false; - source.subscribe((0,_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__.createOperatorSubscriber)(subscriber, value => { - values[i] = value; - if (!hasFirstValue) { - hasFirstValue = true; - remainingFirstValues--; - } - if (!remainingFirstValues) { - subscriber.next(valueTransform(values.slice())); - } - }, () => { - if (! --active) { - subscriber.complete(); - } - })); - }, subscriber); - } - }, subscriber); - }; -} -function maybeSchedule(scheduler, execute, subscription) { - if (scheduler) { - (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__.executeSchedule)(subscription, scheduler, execute); - } else { - execute(); - } -} - -/***/ }), - -/***/ 9644: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/concat.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ concat: () => (/* binding */ concat) -/* harmony export */ }); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../operators/concatAll */ 9089); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/args */ 6190); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ 6231); - - - -function concat(...args) { - return (0,_operators_concatAll__WEBPACK_IMPORTED_MODULE_0__.concatAll)()((0,_from__WEBPACK_IMPORTED_MODULE_1__.from)(args, (0,_util_args__WEBPACK_IMPORTED_MODULE_2__.popScheduler)(args))); -} - -/***/ }), - -/***/ 3558: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/defer.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ defer: () => (/* binding */ defer) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./innerFrom */ 384); - - -function defer(observableFactory) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - (0,_innerFrom__WEBPACK_IMPORTED_MODULE_1__.innerFrom)(observableFactory()).subscribe(subscriber); - }); -} - -/***/ }), - -/***/ 6290: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/empty.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EMPTY: () => (/* binding */ EMPTY), -/* harmony export */ empty: () => (/* binding */ empty) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); - -const EMPTY = new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => subscriber.complete()); -function empty(scheduler) { - return scheduler ? emptyScheduled(scheduler) : EMPTY; -} -function emptyScheduled(scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => scheduler.schedule(() => subscriber.complete())); -} - -/***/ }), - -/***/ 4300: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ forkJoin: () => (/* binding */ forkJoin) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/argsArgArrayOrObject */ 7346); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./innerFrom */ 384); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/args */ 6190); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../operators/OperatorSubscriber */ 5678); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/mapOneOrManyArgs */ 7825); -/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/createObject */ 6118); - - - - - - - -function forkJoin(...args) { - const resultSelector = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popResultSelector)(args); - const { - args: sources, - keys - } = (0,_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__.argsArgArrayOrObject)(args); - const result = new _Observable__WEBPACK_IMPORTED_MODULE_2__.Observable(subscriber => { - const { - length - } = sources; - if (!length) { - subscriber.complete(); - return; - } - const values = new Array(length); - let remainingCompletions = length; - let remainingEmissions = length; - for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) { - let hasValue = false; - (0,_innerFrom__WEBPACK_IMPORTED_MODULE_3__.innerFrom)(sources[sourceIndex]).subscribe((0,_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__.createOperatorSubscriber)(subscriber, value => { - if (!hasValue) { - hasValue = true; - remainingEmissions--; - } - values[sourceIndex] = value; - }, () => remainingCompletions--, undefined, () => { - if (!remainingCompletions || !hasValue) { - if (!remainingEmissions) { - subscriber.next(keys ? (0,_util_createObject__WEBPACK_IMPORTED_MODULE_5__.createObject)(keys, values) : values); - } - subscriber.complete(); - } - })); - } - }); - return resultSelector ? result.pipe((0,_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__.mapOneOrManyArgs)(resultSelector)) : result; -} - -/***/ }), - -/***/ 6231: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/from.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ from: () => (/* binding */ from) -/* harmony export */ }); -/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduled/scheduled */ 5535); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./innerFrom */ 384); - - -function from(input, scheduler) { - return scheduler ? (0,_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__.scheduled)(input, scheduler) : (0,_innerFrom__WEBPACK_IMPORTED_MODULE_1__.innerFrom)(input); -} - -/***/ }), - -/***/ 9016: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ fromEvent: () => (/* binding */ fromEvent) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/mergeMap */ 2607); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArrayLike */ 1287); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isFunction */ 2602); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/mapOneOrManyArgs */ 7825); - - - - - - -const nodeEventEmitterMethods = ['addListener', 'removeListener']; -const eventTargetMethods = ['addEventListener', 'removeEventListener']; -const jqueryMethods = ['on', 'off']; -function fromEvent(target, eventName, options, resultSelector) { - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(options)) { - resultSelector = options; - options = undefined; - } - if (resultSelector) { - return fromEvent(target, eventName, options).pipe((0,_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__.mapOneOrManyArgs)(resultSelector)); - } - const [add, remove] = isEventTarget(target) ? eventTargetMethods.map(methodName => handler => target[methodName](eventName, handler, options)) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : []; - if (!add) { - if ((0,_util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__.isArrayLike)(target)) { - return (0,_operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__.mergeMap)(subTarget => fromEvent(subTarget, eventName, options))((0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__.innerFrom)(target)); - } - } - if (!add) { - throw new TypeError('Invalid event target'); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_5__.Observable(subscriber => { - const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]); - add(handler); - return () => remove(handler); - }); -} -function toCommonHandlerRegistry(target, eventName) { - return methodName => handler => target[methodName](eventName, handler); -} -function isNodeStyleEventEmitter(target) { - return (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(target.addListener) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(target.removeListener); -} -function isJQueryStyleEventEmitter(target) { - return (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(target.on) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(target.off); -} -function isEventTarget(target) { - return (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(target.addEventListener) && (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(target.removeEventListener); -} - -/***/ }), - -/***/ 384: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ fromArrayLike: () => (/* binding */ fromArrayLike), -/* harmony export */ fromAsyncIterable: () => (/* binding */ fromAsyncIterable), -/* harmony export */ fromInteropObservable: () => (/* binding */ fromInteropObservable), -/* harmony export */ fromIterable: () => (/* binding */ fromIterable), -/* harmony export */ fromPromise: () => (/* binding */ fromPromise), -/* harmony export */ fromReadableStreamLike: () => (/* binding */ fromReadableStreamLike), -/* harmony export */ innerFrom: () => (/* binding */ innerFrom) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArrayLike */ 1287); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isPromise */ 3972); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isInteropObservable */ 7808); -/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isAsyncIterable */ 5235); -/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/throwUnobservableError */ 2614); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isIterable */ 9449); -/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/isReadableStreamLike */ 401); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/isFunction */ 2602); -/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/reportUnhandledError */ 6929); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../symbol/observable */ 4373); - - - - - - - - - - - - -function innerFrom(input) { - if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable) { - return input; - } - if (input != null) { - if ((0,_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_1__.isInteropObservable)(input)) { - return fromInteropObservable(input); - } - if ((0,_util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__.isArrayLike)(input)) { - return fromArrayLike(input); - } - if ((0,_util_isPromise__WEBPACK_IMPORTED_MODULE_3__.isPromise)(input)) { - return fromPromise(input); - } - if ((0,_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_4__.isAsyncIterable)(input)) { - return fromAsyncIterable(input); - } - if ((0,_util_isIterable__WEBPACK_IMPORTED_MODULE_5__.isIterable)(input)) { - return fromIterable(input); - } - if ((0,_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_6__.isReadableStreamLike)(input)) { - return fromReadableStreamLike(input); - } - } - throw (0,_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_7__.createInvalidObservableTypeError)(input); -} -function fromInteropObservable(obj) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - const obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_8__.observable](); - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_9__.isFunction)(obs.subscribe)) { - return obs.subscribe(subscriber); - } - throw new TypeError('Provided object does not correctly implement Symbol.observable'); - }); -} -function fromArrayLike(array) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - for (let i = 0; i < array.length && !subscriber.closed; i++) { - subscriber.next(array[i]); - } - subscriber.complete(); - }); -} -function fromPromise(promise) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - promise.then(value => { - if (!subscriber.closed) { - subscriber.next(value); - subscriber.complete(); - } - }, err => subscriber.error(err)).then(null, _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__.reportUnhandledError); - }); -} -function fromIterable(iterable) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - for (const value of iterable) { - subscriber.next(value); - if (subscriber.closed) { - return; - } - } - subscriber.complete(); - }); -} -function fromAsyncIterable(asyncIterable) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - process(asyncIterable, subscriber).catch(err => subscriber.error(err)); - }); -} -function fromReadableStreamLike(readableStream) { - return fromAsyncIterable((0,_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_6__.readableStreamLikeToAsyncGenerator)(readableStream)); -} -function process(asyncIterable, subscriber) { - var asyncIterable_1, asyncIterable_1_1; - var e_1, _a; - return (0,tslib__WEBPACK_IMPORTED_MODULE_11__.__awaiter)(this, void 0, void 0, function* () { - try { - for (asyncIterable_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_11__.__asyncValues)(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) { - const value = asyncIterable_1_1.value; - subscriber.next(value); - if (subscriber.closed) { - return; - } - } - } catch (e_1_1) { - e_1 = { - error: e_1_1 - }; - } finally { - try { - if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1); - } finally { - if (e_1) throw e_1.error; - } - } - subscriber.complete(); - }); -} - -/***/ }), - -/***/ 3379: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/interval.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ interval: () => (/* binding */ interval) -/* harmony export */ }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 7777); -/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timer */ 9378); - - -function interval(period = 0, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.asyncScheduler) { - if (period < 0) { - period = 0; - } - return (0,_timer__WEBPACK_IMPORTED_MODULE_1__.timer)(period, period, scheduler); -} - -/***/ }), - -/***/ 7835: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/merge.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ merge: () => (/* binding */ merge) -/* harmony export */ }); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/mergeAll */ 7047); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./innerFrom */ 384); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty */ 6290); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/args */ 6190); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./from */ 6231); - - - - - -function merge(...args) { - const scheduler = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popScheduler)(args); - const concurrent = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popNumber)(args, Infinity); - const sources = args; - return !sources.length ? _empty__WEBPACK_IMPORTED_MODULE_1__.EMPTY : sources.length === 1 ? (0,_innerFrom__WEBPACK_IMPORTED_MODULE_2__.innerFrom)(sources[0]) : (0,_operators_mergeAll__WEBPACK_IMPORTED_MODULE_3__.mergeAll)(concurrent)((0,_from__WEBPACK_IMPORTED_MODULE_4__.from)(sources, scheduler)); -} - -/***/ }), - -/***/ 4980: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/of.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ of: () => (/* binding */ of) -/* harmony export */ }); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/args */ 6190); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ 6231); - - -function of(...args) { - const scheduler = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popScheduler)(args); - return (0,_from__WEBPACK_IMPORTED_MODULE_1__.from)(args, scheduler); -} - -/***/ }), - -/***/ 3252: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/throwError.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ throwError: () => (/* binding */ throwError) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isFunction */ 2602); - - -function throwError(errorOrErrorFactory, scheduler) { - const errorFactory = (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory; - const init = subscriber => subscriber.error(errorFactory()); - return new _Observable__WEBPACK_IMPORTED_MODULE_1__.Observable(scheduler ? subscriber => scheduler.schedule(init, 0, subscriber) : init); -} - -/***/ }), - -/***/ 9378: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/observable/timer.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ timer: () => (/* binding */ timer) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 7777); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ 7426); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isDate */ 8442); - - - - -function timer(dueTime = 0, intervalOrScheduler, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.async) { - let intervalDuration = -1; - if (intervalOrScheduler != null) { - if ((0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__.isScheduler)(intervalOrScheduler)) { - scheduler = intervalOrScheduler; - } else { - intervalDuration = intervalOrScheduler; - } - } - return new _Observable__WEBPACK_IMPORTED_MODULE_2__.Observable(subscriber => { - let due = (0,_util_isDate__WEBPACK_IMPORTED_MODULE_3__.isValidDate)(dueTime) ? +dueTime - scheduler.now() : dueTime; - if (due < 0) { - due = 0; - } - let n = 0; - return scheduler.schedule(function () { - if (!subscriber.closed) { - subscriber.next(n++); - if (0 <= intervalDuration) { - this.schedule(undefined, intervalDuration); - } else { - subscriber.complete(); - } - } - }, due); - }); -} - -/***/ }), - -/***/ 5678: -/*!*****************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ OperatorSubscriber: () => (/* binding */ OperatorSubscriber), -/* harmony export */ createOperatorSubscriber: () => (/* binding */ createOperatorSubscriber) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 8559); - -function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { - return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); -} -class OperatorSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { - super(destination); - this.onFinalize = onFinalize; - this.shouldUnsubscribe = shouldUnsubscribe; - this._next = onNext ? function (value) { - try { - onNext(value); - } catch (err) { - destination.error(err); - } - } : super._next; - this._error = onError ? function (err) { - try { - onError(err); - } catch (err) { - destination.error(err); - } finally { - this.unsubscribe(); - } - } : super._error; - this._complete = onComplete ? function () { - try { - onComplete(); - } catch (err) { - destination.error(err); - } finally { - this.unsubscribe(); - } - } : super._complete; - } - unsubscribe() { - var _a; - if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { - const { - closed - } = this; - super.unsubscribe(); - !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); - } - } -} - -/***/ }), - -/***/ 6141: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/audit.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ audit: () => (/* binding */ audit) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function audit(durationSelector) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let hasValue = false; - let lastValue = null; - let durationSubscriber = null; - let isComplete = false; - const endDuration = () => { - durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); - durationSubscriber = null; - if (hasValue) { - hasValue = false; - const value = lastValue; - lastValue = null; - subscriber.next(value); - } - isComplete && subscriber.complete(); - }; - const cleanupDuration = () => { - durationSubscriber = null; - isComplete && subscriber.complete(); - }; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - hasValue = true; - lastValue = value; - if (!durationSubscriber) { - (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__.innerFrom)(durationSelector(value)).subscribe(durationSubscriber = (0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, endDuration, cleanupDuration)); - } - }, () => { - isComplete = true; - (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete(); - })); - }); -} - -/***/ }), - -/***/ 2815: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/auditTime.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ auditTime: () => (/* binding */ auditTime) -/* harmony export */ }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 7777); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audit */ 6141); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/timer */ 9378); - - - -function auditTime(duration, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.asyncScheduler) { - return (0,_audit__WEBPACK_IMPORTED_MODULE_1__.audit)(() => (0,_observable_timer__WEBPACK_IMPORTED_MODULE_2__.timer)(duration, scheduler)); -} - -/***/ }), - -/***/ 2389: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/catchError.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ catchError: () => (/* binding */ catchError) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); - - - -function catchError(selector) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let innerSub = null; - let syncUnsub = false; - let handledResult; - innerSub = source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, undefined, undefined, err => { - handledResult = (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__.innerFrom)(selector(err, catchError(selector)(source))); - if (innerSub) { - innerSub.unsubscribe(); - innerSub = null; - handledResult.subscribe(subscriber); - } else { - syncUnsub = true; - } - })); - if (syncUnsub) { - innerSub.unsubscribe(); - innerSub = null; - handledResult.subscribe(subscriber); - } - }); -} - -/***/ }), - -/***/ 9089: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/concatAll.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ concatAll: () => (/* binding */ concatAll) -/* harmony export */ }); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeAll */ 7047); - -function concatAll() { - return (0,_mergeAll__WEBPACK_IMPORTED_MODULE_0__.mergeAll)(1); -} - -/***/ }), - -/***/ 9877: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/concatMap.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ concatMap: () => (/* binding */ concatMap) -/* harmony export */ }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeMap */ 2607); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isFunction */ 2602); - - -function concatMap(project, resultSelector) { - return (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(resultSelector) ? (0,_mergeMap__WEBPACK_IMPORTED_MODULE_1__.mergeMap)(project, resultSelector, 1) : (0,_mergeMap__WEBPACK_IMPORTED_MODULE_1__.mergeMap)(project, 1); -} - -/***/ }), - -/***/ 655: -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ debounceTime: () => (/* binding */ debounceTime) -/* harmony export */ }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 7777); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function debounceTime(dueTime, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.asyncScheduler) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - let activeTask = null; - let lastValue = null; - let lastTime = null; - const emit = () => { - if (activeTask) { - activeTask.unsubscribe(); - activeTask = null; - const value = lastValue; - lastValue = null; - subscriber.next(value); - } - }; - function emitWhenIdle() { - const targetTime = lastTime + dueTime; - const now = scheduler.now(); - if (now < targetTime) { - activeTask = this.schedule(undefined, targetTime - now); - subscriber.add(activeTask); - return; - } - emit(); - } - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__.createOperatorSubscriber)(subscriber, value => { - lastValue = value; - lastTime = scheduler.now(); - if (!activeTask) { - activeTask = scheduler.schedule(emitWhenIdle, dueTime); - subscriber.add(activeTask); - } - }, () => { - emit(); - subscriber.complete(); - }, undefined, () => { - lastValue = activeTask = null; - })); - }); -} - -/***/ }), - -/***/ 728: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ defaultIfEmpty: () => (/* binding */ defaultIfEmpty) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - -function defaultIfEmpty(defaultValue) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let hasValue = false; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - hasValue = true; - subscriber.next(value); - }, () => { - if (!hasValue) { - subscriber.next(defaultValue); - } - subscriber.complete(); - })); - }); -} - -/***/ }), - -/***/ 7592: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/delay.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ delay: () => (/* binding */ delay) -/* harmony export */ }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 7777); -/* harmony import */ var _delayWhen__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./delayWhen */ 9134); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/timer */ 9378); - - - -function delay(due, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.asyncScheduler) { - const duration = (0,_observable_timer__WEBPACK_IMPORTED_MODULE_1__.timer)(due, scheduler); - return (0,_delayWhen__WEBPACK_IMPORTED_MODULE_2__.delayWhen)(() => duration); -} - -/***/ }), - -/***/ 9134: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ delayWhen: () => (/* binding */ delayWhen) -/* harmony export */ }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ 9644); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./take */ 1527); -/* harmony import */ var _ignoreElements__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ignoreElements */ 9923); -/* harmony import */ var _mapTo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mapTo */ 8037); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mergeMap */ 2607); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../observable/innerFrom */ 384); - - - - - - -function delayWhen(delayDurationSelector, subscriptionDelay) { - if (subscriptionDelay) { - return source => (0,_observable_concat__WEBPACK_IMPORTED_MODULE_0__.concat)(subscriptionDelay.pipe((0,_take__WEBPACK_IMPORTED_MODULE_1__.take)(1), (0,_ignoreElements__WEBPACK_IMPORTED_MODULE_2__.ignoreElements)()), source.pipe(delayWhen(delayDurationSelector))); - } - return (0,_mergeMap__WEBPACK_IMPORTED_MODULE_3__.mergeMap)((value, index) => (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__.innerFrom)(delayDurationSelector(value, index)).pipe((0,_take__WEBPACK_IMPORTED_MODULE_1__.take)(1), (0,_mapTo__WEBPACK_IMPORTED_MODULE_5__.mapTo)(value))); -} - -/***/ }), - -/***/ 3317: -/*!*******************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ distinctUntilChanged: () => (/* binding */ distinctUntilChanged) -/* harmony export */ }); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/identity */ 204); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function distinctUntilChanged(comparator, keySelector = _util_identity__WEBPACK_IMPORTED_MODULE_0__.identity) { - comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare; - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - let previousKey; - let first = true; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__.createOperatorSubscriber)(subscriber, value => { - const currentKey = keySelector(value); - if (first || !comparator(previousKey, currentKey)) { - first = false; - previousKey = currentKey; - subscriber.next(value); - } - })); - }); -} -function defaultCompare(a, b) { - return a === b; -} - -/***/ }), - -/***/ 4520: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/filter.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ filter: () => (/* binding */ filter) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - -function filter(predicate, thisArg) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let index = 0; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => predicate.call(thisArg, value, index++) && subscriber.next(value))); - }); -} - -/***/ }), - -/***/ 7474: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/finalize.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ finalize: () => (/* binding */ finalize) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); - -function finalize(callback) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - try { - source.subscribe(subscriber); - } finally { - subscriber.add(callback); - } - }); -} - -/***/ }), - -/***/ 5267: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/first.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ first: () => (/* binding */ first) -/* harmony export */ }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/EmptyError */ 1967); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ 4520); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./take */ 1527); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ 728); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./throwIfEmpty */ 3614); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ 204); - - - - - - -function first(predicate, defaultValue) { - const hasDefaultValue = arguments.length >= 2; - return source => source.pipe(predicate ? (0,_filter__WEBPACK_IMPORTED_MODULE_0__.filter)((v, i) => predicate(v, i, source)) : _util_identity__WEBPACK_IMPORTED_MODULE_1__.identity, (0,_take__WEBPACK_IMPORTED_MODULE_2__.take)(1), hasDefaultValue ? (0,_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__.defaultIfEmpty)(defaultValue) : (0,_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__.throwIfEmpty)(() => new _util_EmptyError__WEBPACK_IMPORTED_MODULE_5__.EmptyError())); -} - -/***/ }), - -/***/ 9923: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ignoreElements: () => (/* binding */ ignoreElements) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/noop */ 2707); - - - -function ignoreElements() { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, _util_noop__WEBPACK_IMPORTED_MODULE_2__.noop)); - }); -} - -/***/ }), - -/***/ 9509: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/last.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ last: () => (/* binding */ last) -/* harmony export */ }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/EmptyError */ 1967); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ 4520); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./takeLast */ 7344); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./throwIfEmpty */ 3614); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ 728); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ 204); - - - - - - -function last(predicate, defaultValue) { - const hasDefaultValue = arguments.length >= 2; - return source => source.pipe(predicate ? (0,_filter__WEBPACK_IMPORTED_MODULE_0__.filter)((v, i) => predicate(v, i, source)) : _util_identity__WEBPACK_IMPORTED_MODULE_1__.identity, (0,_takeLast__WEBPACK_IMPORTED_MODULE_2__.takeLast)(1), hasDefaultValue ? (0,_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__.defaultIfEmpty)(defaultValue) : (0,_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__.throwIfEmpty)(() => new _util_EmptyError__WEBPACK_IMPORTED_MODULE_5__.EmptyError())); -} - -/***/ }), - -/***/ 9736: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/map.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ map: () => (/* binding */ map) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - -function map(project, thisArg) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let index = 0; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - subscriber.next(project.call(thisArg, value, index++)); - })); - }); -} - -/***/ }), - -/***/ 8037: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/mapTo.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mapTo: () => (/* binding */ mapTo) -/* harmony export */ }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ 9736); - -function mapTo(value) { - return (0,_map__WEBPACK_IMPORTED_MODULE_0__.map)(() => value); -} - -/***/ }), - -/***/ 7047: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mergeAll: () => (/* binding */ mergeAll) -/* harmony export */ }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ 2607); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ 204); - - -function mergeAll(concurrent = Infinity) { - return (0,_mergeMap__WEBPACK_IMPORTED_MODULE_0__.mergeMap)(_util_identity__WEBPACK_IMPORTED_MODULE_1__.identity, concurrent); -} - -/***/ }), - -/***/ 8164: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mergeInternals: () => (/* binding */ mergeInternals) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/executeSchedule */ 9701); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) { - const buffer = []; - let active = 0; - let index = 0; - let isComplete = false; - const checkComplete = () => { - if (isComplete && !buffer.length && !active) { - subscriber.complete(); - } - }; - const outerNext = value => active < concurrent ? doInnerSub(value) : buffer.push(value); - const doInnerSub = value => { - expand && subscriber.next(value); - active++; - let innerComplete = false; - (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__.innerFrom)(project(value, index++)).subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, innerValue => { - onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); - if (expand) { - outerNext(innerValue); - } else { - subscriber.next(innerValue); - } - }, () => { - innerComplete = true; - }, undefined, () => { - if (innerComplete) { - try { - active--; - while (buffer.length && active < concurrent) { - const bufferedValue = buffer.shift(); - if (innerSubScheduler) { - (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_2__.executeSchedule)(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue)); - } else { - doInnerSub(bufferedValue); - } - } - checkComplete(); - } catch (err) { - subscriber.error(err); - } - } - })); - }; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, outerNext, () => { - isComplete = true; - checkComplete(); - })); - return () => { - additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); - }; -} - -/***/ }), - -/***/ 2607: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mergeMap: () => (/* binding */ mergeMap) -/* harmony export */ }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map */ 9736); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mergeInternals */ 8164); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isFunction */ 2602); - - - - - -function mergeMap(project, resultSelector, concurrent = Infinity) { - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(resultSelector)) { - return mergeMap((a, i) => (0,_map__WEBPACK_IMPORTED_MODULE_1__.map)((b, ii) => resultSelector(a, b, i, ii))((0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__.innerFrom)(project(a, i))), concurrent); - } else if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_3__.operate)((source, subscriber) => (0,_mergeInternals__WEBPACK_IMPORTED_MODULE_4__.mergeInternals)(source, subscriber, project, concurrent)); -} - -/***/ }), - -/***/ 2704: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/observeOn.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ observeOn: () => (/* binding */ observeOn) -/* harmony export */ }); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/executeSchedule */ 9701); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function observeOn(scheduler, delay = 0) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_2__.executeSchedule)(subscriber, scheduler, () => subscriber.next(value), delay), () => (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_2__.executeSchedule)(subscriber, scheduler, () => subscriber.complete(), delay), err => (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_2__.executeSchedule)(subscriber, scheduler, () => subscriber.error(err), delay))); - }); -} - -/***/ }), - -/***/ 9422: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/pairwise.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ pairwise: () => (/* binding */ pairwise) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - -function pairwise() { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let prev; - let hasPrev = false; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - const p = prev; - prev = value; - hasPrev && subscriber.next([p, value]); - hasPrev = true; - })); - }); -} - -/***/ }), - -/***/ 2371: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/refCount.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ refCount: () => (/* binding */ refCount) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - -function refCount() { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let connection = null; - source._refCount++; - const refCounter = (0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, undefined, undefined, undefined, () => { - if (!source || source._refCount <= 0 || 0 < --source._refCount) { - connection = null; - return; - } - const sharedConnection = source._connection; - const conn = connection; - connection = null; - if (sharedConnection && (!conn || sharedConnection === conn)) { - sharedConnection.unsubscribe(); - } - subscriber.unsubscribe(); - }); - source.subscribe(refCounter); - if (!refCounter.closed) { - connection = source.connect(); - } - }); -} - -/***/ }), - -/***/ 623: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/scan.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scan: () => (/* binding */ scan) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scanInternals */ 7938); - - -function scan(accumulator, seed) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((0,_scanInternals__WEBPACK_IMPORTED_MODULE_1__.scanInternals)(accumulator, seed, arguments.length >= 2, true)); -} - -/***/ }), - -/***/ 7938: -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scanInternals: () => (/* binding */ scanInternals) -/* harmony export */ }); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - -function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) { - return (source, subscriber) => { - let hasState = hasSeed; - let state = seed; - let index = 0; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__.createOperatorSubscriber)(subscriber, value => { - const i = index++; - state = hasState ? accumulator(state, value, i) : (hasState = true, value); - emitOnNext && subscriber.next(state); - }, emitBeforeComplete && (() => { - hasState && subscriber.next(state); - subscriber.complete(); - }))); - }; -} - -/***/ }), - -/***/ 5584: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/share.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ share: () => (/* binding */ share) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ 2513); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ 8559); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); - - - - -function share(options = {}) { - const { - connector = () => new _Subject__WEBPACK_IMPORTED_MODULE_0__.Subject(), - resetOnError = true, - resetOnComplete = true, - resetOnRefCountZero = true - } = options; - return wrapperSource => { - let connection; - let resetConnection; - let subject; - let refCount = 0; - let hasCompleted = false; - let hasErrored = false; - const cancelReset = () => { - resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe(); - resetConnection = undefined; - }; - const reset = () => { - cancelReset(); - connection = subject = undefined; - hasCompleted = hasErrored = false; - }; - const resetAndUnsubscribe = () => { - const conn = connection; - reset(); - conn === null || conn === void 0 ? void 0 : conn.unsubscribe(); - }; - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - refCount++; - if (!hasErrored && !hasCompleted) { - cancelReset(); - } - const dest = subject = subject !== null && subject !== void 0 ? subject : connector(); - subscriber.add(() => { - refCount--; - if (refCount === 0 && !hasErrored && !hasCompleted) { - resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero); - } - }); - dest.subscribe(subscriber); - if (!connection && refCount > 0) { - connection = new _Subscriber__WEBPACK_IMPORTED_MODULE_2__.SafeSubscriber({ - next: value => dest.next(value), - error: err => { - hasErrored = true; - cancelReset(); - resetConnection = handleReset(reset, resetOnError, err); - dest.error(err); - }, - complete: () => { - hasCompleted = true; - cancelReset(); - resetConnection = handleReset(reset, resetOnComplete); - dest.complete(); - } - }); - (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__.innerFrom)(source).subscribe(connection); - } - })(wrapperSource); - }; -} -function handleReset(reset, on, ...args) { - if (on === true) { - reset(); - return; - } - if (on === false) { - return; - } - const onSubscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_2__.SafeSubscriber({ - next: () => { - onSubscriber.unsubscribe(); - reset(); - } - }); - return (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__.innerFrom)(on(...args)).subscribe(onSubscriber); -} - -/***/ }), - -/***/ 1650: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ shareReplay: () => (/* binding */ shareReplay) -/* harmony export */ }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ReplaySubject */ 5400); -/* harmony import */ var _share__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./share */ 5584); - - -function shareReplay(configOrBufferSize, windowTime, scheduler) { - let bufferSize; - let refCount = false; - if (configOrBufferSize && typeof configOrBufferSize === 'object') { - ({ - bufferSize = Infinity, - windowTime = Infinity, - refCount = false, - scheduler - } = configOrBufferSize); - } else { - bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity; - } - return (0,_share__WEBPACK_IMPORTED_MODULE_0__.share)({ - connector: () => new _ReplaySubject__WEBPACK_IMPORTED_MODULE_1__.ReplaySubject(bufferSize, windowTime, scheduler), - resetOnError: true, - resetOnComplete: false, - resetOnRefCountZero: refCount - }); -} - -/***/ }), - -/***/ 5357: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/skip.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ skip: () => (/* binding */ skip) -/* harmony export */ }); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ 4520); - -function skip(count) { - return (0,_filter__WEBPACK_IMPORTED_MODULE_0__.filter)((_, index) => count <= index); -} - -/***/ }), - -/***/ 5043: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/startWith.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ startWith: () => (/* binding */ startWith) -/* harmony export */ }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/concat */ 9644); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/args */ 6190); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); - - - -function startWith(...values) { - const scheduler = (0,_util_args__WEBPACK_IMPORTED_MODULE_0__.popScheduler)(values); - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - (scheduler ? (0,_observable_concat__WEBPACK_IMPORTED_MODULE_2__.concat)(values, source, scheduler) : (0,_observable_concat__WEBPACK_IMPORTED_MODULE_2__.concat)(values, source)).subscribe(subscriber); - }); -} - -/***/ }), - -/***/ 2499: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeOn: () => (/* binding */ subscribeOn) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); - -function subscribeOn(scheduler, delay = 0) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay)); - }); -} - -/***/ }), - -/***/ 1891: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/switchMap.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ switchMap: () => (/* binding */ switchMap) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function switchMap(project, resultSelector) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let innerSubscriber = null; - let index = 0; - let isComplete = false; - const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete(); - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); - let innerIndex = 0; - const outerIndex = index++; - (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__.innerFrom)(project(value, outerIndex)).subscribe(innerSubscriber = (0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, innerValue => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => { - innerSubscriber = null; - checkComplete(); - })); - }, () => { - isComplete = true; - checkComplete(); - })); - }); -} - -/***/ }), - -/***/ 1527: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/take.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ take: () => (/* binding */ take) -/* harmony export */ }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/empty */ 6290); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function take(count) { - return count <= 0 ? () => _observable_empty__WEBPACK_IMPORTED_MODULE_0__.EMPTY : (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - let seen = 0; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__.createOperatorSubscriber)(subscriber, value => { - if (++seen <= count) { - subscriber.next(value); - if (count <= seen) { - subscriber.complete(); - } - } - })); - }); -} - -/***/ }), - -/***/ 7344: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/takeLast.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ takeLast: () => (/* binding */ takeLast) -/* harmony export */ }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/empty */ 6290); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function takeLast(count) { - return count <= 0 ? () => _observable_empty__WEBPACK_IMPORTED_MODULE_0__.EMPTY : (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - let buffer = []; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__.createOperatorSubscriber)(subscriber, value => { - buffer.push(value); - count < buffer.length && buffer.shift(); - }, () => { - for (const value of buffer) { - subscriber.next(value); - } - subscriber.complete(); - }, undefined, () => { - buffer = null; - })); - }); -} - -/***/ }), - -/***/ 274: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ takeUntil: () => (/* binding */ takeUntil) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/noop */ 2707); - - - - -function takeUntil(notifier) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__.innerFrom)(notifier).subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__.createOperatorSubscriber)(subscriber, () => subscriber.complete(), _util_noop__WEBPACK_IMPORTED_MODULE_3__.noop)); - !subscriber.closed && source.subscribe(subscriber); - }); -} - -/***/ }), - -/***/ 2541: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ takeWhile: () => (/* binding */ takeWhile) -/* harmony export */ }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - -function takeWhile(predicate, inclusive = false) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let index = 0; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - const result = predicate(value, index++); - (result || inclusive) && subscriber.next(value); - !result && subscriber.complete(); - })); - }); -} - -/***/ }), - -/***/ 3738: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/tap.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ tap: () => (/* binding */ tap) -/* harmony export */ }); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isFunction */ 2602); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/identity */ 204); - - - - -function tap(observerOrNext, error, complete) { - const tapObserver = (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(observerOrNext) || error || complete ? { - next: observerOrNext, - error, - complete - } : observerOrNext; - return tapObserver ? (0,_util_lift__WEBPACK_IMPORTED_MODULE_1__.operate)((source, subscriber) => { - var _a; - (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - let isUnsub = true; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__.createOperatorSubscriber)(subscriber, value => { - var _a; - (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value); - subscriber.next(value); - }, () => { - var _a; - isUnsub = false; - (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - subscriber.complete(); - }, err => { - var _a; - isUnsub = false; - (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err); - subscriber.error(err); - }, () => { - var _a, _b; - if (isUnsub) { - (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - } - (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); - })); - }) : _util_identity__WEBPACK_IMPORTED_MODULE_3__.identity; -} - -/***/ }), - -/***/ 3614: -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ throwIfEmpty: () => (/* binding */ throwIfEmpty) -/* harmony export */ }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/EmptyError */ 1967); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/lift */ 4114); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OperatorSubscriber */ 5678); - - - -function throwIfEmpty(errorFactory = defaultErrorFactory) { - return (0,_util_lift__WEBPACK_IMPORTED_MODULE_0__.operate)((source, subscriber) => { - let hasValue = false; - source.subscribe((0,_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__.createOperatorSubscriber)(subscriber, value => { - hasValue = true; - subscriber.next(value); - }, () => hasValue ? subscriber.complete() : subscriber.error(errorFactory()))); - }); -} -function defaultErrorFactory() { - return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__.EmptyError(); -} - -/***/ }), - -/***/ 8297: -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleArray: () => (/* binding */ scheduleArray) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); - -function scheduleArray(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - let i = 0; - return scheduler.schedule(function () { - if (i === input.length) { - subscriber.complete(); - } else { - subscriber.next(input[i++]); - if (!subscriber.closed) { - this.schedule(); - } - } - }); - }); -} - -/***/ }), - -/***/ 6679: -/*!********************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleAsyncIterable: () => (/* binding */ scheduleAsyncIterable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/executeSchedule */ 9701); - - -function scheduleAsyncIterable(input, scheduler) { - if (!input) { - throw new Error('Iterable cannot be null'); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__.executeSchedule)(subscriber, scheduler, () => { - const iterator = input[Symbol.asyncIterator](); - (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__.executeSchedule)(subscriber, scheduler, () => { - iterator.next().then(result => { - if (result.done) { - subscriber.complete(); - } else { - subscriber.next(result.value); - } - }); - }, 0, true); - }); - }); -} - -/***/ }), - -/***/ 7695: -/*!***************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleIterable: () => (/* binding */ scheduleIterable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/iterator */ 6691); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isFunction */ 2602); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/executeSchedule */ 9701); - - - - -function scheduleIterable(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - let iterator; - (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__.executeSchedule)(subscriber, scheduler, () => { - iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_2__.iterator](); - (0,_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__.executeSchedule)(subscriber, scheduler, () => { - let value; - let done; - try { - ({ - value, - done - } = iterator.next()); - } catch (err) { - subscriber.error(err); - return; - } - if (done) { - subscriber.complete(); - } else { - subscriber.next(value); - } - }, 0, true); - }); - return () => (0,_util_isFunction__WEBPACK_IMPORTED_MODULE_3__.isFunction)(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); - }); -} - -/***/ }), - -/***/ 5158: -/*!*****************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleObservable: () => (/* binding */ scheduleObservable) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/observeOn */ 2704); -/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../operators/subscribeOn */ 2499); - - - -function scheduleObservable(input, scheduler) { - return (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__.innerFrom)(input).pipe((0,_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_1__.subscribeOn)(scheduler), (0,_operators_observeOn__WEBPACK_IMPORTED_MODULE_2__.observeOn)(scheduler)); -} - -/***/ }), - -/***/ 2147: -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ schedulePromise: () => (/* binding */ schedulePromise) -/* harmony export */ }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/innerFrom */ 384); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/observeOn */ 2704); -/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../operators/subscribeOn */ 2499); - - - -function schedulePromise(input, scheduler) { - return (0,_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__.innerFrom)(input).pipe((0,_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_1__.subscribeOn)(scheduler), (0,_operators_observeOn__WEBPACK_IMPORTED_MODULE_2__.observeOn)(scheduler)); -} - -/***/ }), - -/***/ 9405: -/*!*************************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js ***! - \*************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleReadableStreamLike: () => (/* binding */ scheduleReadableStreamLike) -/* harmony export */ }); -/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scheduleAsyncIterable */ 6679); -/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isReadableStreamLike */ 401); - - -function scheduleReadableStreamLike(input, scheduler) { - return (0,_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__.scheduleAsyncIterable)((0,_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__.readableStreamLikeToAsyncGenerator)(input), scheduler); -} - -/***/ }), - -/***/ 5535: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduled: () => (/* binding */ scheduled) -/* harmony export */ }); -/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scheduleObservable */ 5158); -/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./schedulePromise */ 2147); -/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scheduleArray */ 8297); -/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./scheduleIterable */ 7695); -/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scheduleAsyncIterable */ 6679); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isInteropObservable */ 7808); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isPromise */ 3972); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArrayLike */ 1287); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/isIterable */ 9449); -/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/isAsyncIterable */ 5235); -/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util/throwUnobservableError */ 2614); -/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/isReadableStreamLike */ 401); -/* harmony import */ var _scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./scheduleReadableStreamLike */ 9405); - - - - - - - - - - - - - -function scheduled(input, scheduler) { - if (input != null) { - if ((0,_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_0__.isInteropObservable)(input)) { - return (0,_scheduleObservable__WEBPACK_IMPORTED_MODULE_1__.scheduleObservable)(input, scheduler); - } - if ((0,_util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__.isArrayLike)(input)) { - return (0,_scheduleArray__WEBPACK_IMPORTED_MODULE_3__.scheduleArray)(input, scheduler); - } - if ((0,_util_isPromise__WEBPACK_IMPORTED_MODULE_4__.isPromise)(input)) { - return (0,_schedulePromise__WEBPACK_IMPORTED_MODULE_5__.schedulePromise)(input, scheduler); - } - if ((0,_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_6__.isAsyncIterable)(input)) { - return (0,_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_7__.scheduleAsyncIterable)(input, scheduler); - } - if ((0,_util_isIterable__WEBPACK_IMPORTED_MODULE_8__.isIterable)(input)) { - return (0,_scheduleIterable__WEBPACK_IMPORTED_MODULE_9__.scheduleIterable)(input, scheduler); - } - if ((0,_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_10__.isReadableStreamLike)(input)) { - return (0,_scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__.scheduleReadableStreamLike)(input, scheduler); - } - } - throw (0,_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_12__.createInvalidObservableTypeError)(input); -} - -/***/ }), - -/***/ 1028: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/Action.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Action: () => (/* binding */ Action) -/* harmony export */ }); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscription */ 1523); - -class Action extends _Subscription__WEBPACK_IMPORTED_MODULE_0__.Subscription { - constructor(scheduler, work) { - super(); - } - schedule(state, delay = 0) { - return this; - } -} - -/***/ }), - -/***/ 1397: -/*!*******************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AnimationFrameAction: () => (/* binding */ AnimationFrameAction) -/* harmony export */ }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncAction */ 415); -/* harmony import */ var _animationFrameProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./animationFrameProvider */ 8955); - - -class AnimationFrameAction extends _AsyncAction__WEBPACK_IMPORTED_MODULE_0__.AsyncAction { - constructor(scheduler, work) { - super(scheduler, work); - this.scheduler = scheduler; - this.work = work; - } - requestAsyncId(scheduler, id, delay = 0) { - if (delay !== null && delay > 0) { - return super.requestAsyncId(scheduler, id, delay); - } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = _animationFrameProvider__WEBPACK_IMPORTED_MODULE_1__.animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined))); - } - recycleAsyncId(scheduler, id, delay = 0) { - var _a; - if (delay != null ? delay > 0 : this.delay > 0) { - return super.recycleAsyncId(scheduler, id, delay); - } - const { - actions - } = scheduler; - if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { - _animationFrameProvider__WEBPACK_IMPORTED_MODULE_1__.animationFrameProvider.cancelAnimationFrame(id); - scheduler._scheduled = undefined; - } - return undefined; - } -} - -/***/ }), - -/***/ 6156: -/*!**********************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js ***! - \**********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AnimationFrameScheduler: () => (/* binding */ AnimationFrameScheduler) -/* harmony export */ }); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncScheduler */ 5920); - -class AnimationFrameScheduler extends _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__.AsyncScheduler { - flush(action) { - this._active = true; - const flushId = this._scheduled; - this._scheduled = undefined; - const { - actions - } = this; - let error; - action = action || actions.shift(); - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while ((action = actions[0]) && action.id === flushId && actions.shift()); - this._active = false; - if (error) { - while ((action = actions[0]) && action.id === flushId && actions.shift()) { - action.unsubscribe(); - } - throw error; - } - } -} - -/***/ }), - -/***/ 81: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AsapAction: () => (/* binding */ AsapAction) -/* harmony export */ }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncAction */ 415); -/* harmony import */ var _immediateProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./immediateProvider */ 965); - - -class AsapAction extends _AsyncAction__WEBPACK_IMPORTED_MODULE_0__.AsyncAction { - constructor(scheduler, work) { - super(scheduler, work); - this.scheduler = scheduler; - this.work = work; - } - requestAsyncId(scheduler, id, delay = 0) { - if (delay !== null && delay > 0) { - return super.requestAsyncId(scheduler, id, delay); - } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = _immediateProvider__WEBPACK_IMPORTED_MODULE_1__.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined))); - } - recycleAsyncId(scheduler, id, delay = 0) { - var _a; - if (delay != null ? delay > 0 : this.delay > 0) { - return super.recycleAsyncId(scheduler, id, delay); - } - const { - actions - } = scheduler; - if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { - _immediateProvider__WEBPACK_IMPORTED_MODULE_1__.immediateProvider.clearImmediate(id); - if (scheduler._scheduled === id) { - scheduler._scheduled = undefined; - } - } - return undefined; - } -} - -/***/ }), - -/***/ 3403: -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AsapScheduler: () => (/* binding */ AsapScheduler) -/* harmony export */ }); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncScheduler */ 5920); - -class AsapScheduler extends _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__.AsyncScheduler { - flush(action) { - this._active = true; - const flushId = this._scheduled; - this._scheduled = undefined; - const { - actions - } = this; - let error; - action = action || actions.shift(); - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while ((action = actions[0]) && action.id === flushId && actions.shift()); - this._active = false; - if (error) { - while ((action = actions[0]) && action.id === flushId && actions.shift()) { - action.unsubscribe(); - } - throw error; - } - } -} - -/***/ }), - -/***/ 415: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AsyncAction: () => (/* binding */ AsyncAction) -/* harmony export */ }); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Action */ 1028); -/* harmony import */ var _intervalProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intervalProvider */ 4916); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/arrRemove */ 5559); - - - -class AsyncAction extends _Action__WEBPACK_IMPORTED_MODULE_0__.Action { - constructor(scheduler, work) { - super(scheduler, work); - this.scheduler = scheduler; - this.work = work; - this.pending = false; - } - schedule(state, delay = 0) { - var _a; - if (this.closed) { - return this; - } - this.state = state; - const id = this.id; - const scheduler = this.scheduler; - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay); - } - this.pending = true; - this.delay = delay; - this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay); - return this; - } - requestAsyncId(scheduler, _id, delay = 0) { - return _intervalProvider__WEBPACK_IMPORTED_MODULE_1__.intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay); - } - recycleAsyncId(_scheduler, id, delay = 0) { - if (delay != null && this.delay === delay && this.pending === false) { - return id; - } - if (id != null) { - _intervalProvider__WEBPACK_IMPORTED_MODULE_1__.intervalProvider.clearInterval(id); - } - return undefined; - } - execute(state, delay) { - if (this.closed) { - return new Error('executing a cancelled action'); - } - this.pending = false; - const error = this._execute(state, delay); - if (error) { - return error; - } else if (this.pending === false && this.id != null) { - this.id = this.recycleAsyncId(this.scheduler, this.id, null); - } - } - _execute(state, _delay) { - let errored = false; - let errorValue; - try { - this.work(state); - } catch (e) { - errored = true; - errorValue = e ? e : new Error('Scheduled action threw falsy error'); - } - if (errored) { - this.unsubscribe(); - return errorValue; - } - } - unsubscribe() { - if (!this.closed) { - const { - id, - scheduler - } = this; - const { - actions - } = scheduler; - this.work = this.state = this.scheduler = null; - this.pending = false; - (0,_util_arrRemove__WEBPACK_IMPORTED_MODULE_2__.arrRemove)(actions, this); - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); - } - this.delay = null; - super.unsubscribe(); - } - } -} - -/***/ }), - -/***/ 5920: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AsyncScheduler: () => (/* binding */ AsyncScheduler) -/* harmony export */ }); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Scheduler */ 5161); - -class AsyncScheduler extends _Scheduler__WEBPACK_IMPORTED_MODULE_0__.Scheduler { - constructor(SchedulerAction, now = _Scheduler__WEBPACK_IMPORTED_MODULE_0__.Scheduler.now) { - super(SchedulerAction, now); - this.actions = []; - this._active = false; - } - flush(action) { - const { - actions - } = this; - if (this._active) { - actions.push(action); - return; - } - let error; - this._active = true; - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (action = actions.shift()); - this._active = false; - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - } -} - -/***/ }), - -/***/ 6345: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ animationFrame: () => (/* binding */ animationFrame), -/* harmony export */ animationFrameScheduler: () => (/* binding */ animationFrameScheduler) -/* harmony export */ }); -/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AnimationFrameAction */ 1397); -/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimationFrameScheduler */ 6156); - - -const animationFrameScheduler = new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_0__.AnimationFrameScheduler(_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_1__.AnimationFrameAction); -const animationFrame = animationFrameScheduler; - -/***/ }), - -/***/ 8955: -/*!*********************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js ***! - \*********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ animationFrameProvider: () => (/* binding */ animationFrameProvider) -/* harmony export */ }); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscription */ 1523); - -const animationFrameProvider = { - schedule(callback) { - let request = requestAnimationFrame; - let cancel = cancelAnimationFrame; - const { - delegate - } = animationFrameProvider; - if (delegate) { - request = delegate.requestAnimationFrame; - cancel = delegate.cancelAnimationFrame; - } - const handle = request(timestamp => { - cancel = undefined; - callback(timestamp); - }); - return new _Subscription__WEBPACK_IMPORTED_MODULE_0__.Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle)); - }, - requestAnimationFrame(...args) { - const { - delegate - } = animationFrameProvider; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args); - }, - cancelAnimationFrame(...args) { - const { - delegate - } = animationFrameProvider; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args); - }, - delegate: undefined -}; - -/***/ }), - -/***/ 1141: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/asap.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ asap: () => (/* binding */ asap), -/* harmony export */ asapScheduler: () => (/* binding */ asapScheduler) -/* harmony export */ }); -/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsapAction */ 81); -/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsapScheduler */ 3403); - - -const asapScheduler = new _AsapScheduler__WEBPACK_IMPORTED_MODULE_0__.AsapScheduler(_AsapAction__WEBPACK_IMPORTED_MODULE_1__.AsapAction); -const asap = asapScheduler; - -/***/ }), - -/***/ 7777: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/async.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ async: () => (/* binding */ async), -/* harmony export */ asyncScheduler: () => (/* binding */ asyncScheduler) -/* harmony export */ }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ 415); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncScheduler */ 5920); - - -const asyncScheduler = new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__.AsyncScheduler(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__.AsyncAction); -const async = asyncScheduler; - -/***/ }), - -/***/ 6926: -/*!********************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ dateTimestampProvider: () => (/* binding */ dateTimestampProvider) -/* harmony export */ }); -const dateTimestampProvider = { - now() { - return (dateTimestampProvider.delegate || Date).now(); - }, - delegate: undefined -}; - -/***/ }), - -/***/ 965: -/*!****************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js ***! - \****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ immediateProvider: () => (/* binding */ immediateProvider) -/* harmony export */ }); -/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/Immediate */ 1698); - -const { - setImmediate, - clearImmediate -} = _util_Immediate__WEBPACK_IMPORTED_MODULE_0__.Immediate; -const immediateProvider = { - setImmediate(...args) { - const { - delegate - } = immediateProvider; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args); - }, - clearImmediate(handle) { - const { - delegate - } = immediateProvider; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle); - }, - delegate: undefined -}; - -/***/ }), - -/***/ 4916: -/*!***************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ intervalProvider: () => (/* binding */ intervalProvider) -/* harmony export */ }); -const intervalProvider = { - setInterval(handler, timeout, ...args) { - const { - delegate - } = intervalProvider; - if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { - return delegate.setInterval(handler, timeout, ...args); - } - return setInterval(handler, timeout, ...args); - }, - clearInterval(handle) { - const { - delegate - } = intervalProvider; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); - }, - delegate: undefined -}; - -/***/ }), - -/***/ 8411: -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ timeoutProvider: () => (/* binding */ timeoutProvider) -/* harmony export */ }); -const timeoutProvider = { - setTimeout(handler, timeout, ...args) { - const { - delegate - } = timeoutProvider; - if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { - return delegate.setTimeout(handler, timeout, ...args); - } - return setTimeout(handler, timeout, ...args); - }, - clearTimeout(handle) { - const { - delegate - } = timeoutProvider; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); - }, - delegate: undefined -}; - -/***/ }), - -/***/ 6691: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/symbol/iterator.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ getSymbolIterator: () => (/* binding */ getSymbolIterator), -/* harmony export */ iterator: () => (/* binding */ iterator) -/* harmony export */ }); -function getSymbolIterator() { - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return '@@iterator'; - } - return Symbol.iterator; -} -const iterator = getSymbolIterator(); - -/***/ }), - -/***/ 4373: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/symbol/observable.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ observable: () => (/* binding */ observable) -/* harmony export */ }); -const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')(); - -/***/ }), - -/***/ 1967: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/EmptyError.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EmptyError: () => (/* binding */ EmptyError) -/* harmony export */ }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createErrorClass */ 1566); - -const EmptyError = (0,_createErrorClass__WEBPACK_IMPORTED_MODULE_0__.createErrorClass)(_super => function EmptyErrorImpl() { - _super(this); - this.name = 'EmptyError'; - this.message = 'no elements in sequence'; -}); - -/***/ }), - -/***/ 1698: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/Immediate.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Immediate: () => (/* binding */ Immediate), -/* harmony export */ TestTools: () => (/* binding */ TestTools) -/* harmony export */ }); -let nextHandle = 1; -let resolved; -const activeHandles = {}; -function findAndClearHandle(handle) { - if (handle in activeHandles) { - delete activeHandles[handle]; - return true; - } - return false; -} -const Immediate = { - setImmediate(cb) { - const handle = nextHandle++; - activeHandles[handle] = true; - if (!resolved) { - resolved = Promise.resolve(); - } - resolved.then(() => findAndClearHandle(handle) && cb()); - return handle; - }, - clearImmediate(handle) { - findAndClearHandle(handle); - } -}; -const TestTools = { - pending() { - return Object.keys(activeHandles).length; - } -}; - -/***/ }), - -/***/ 1558: -/*!*****************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ObjectUnsubscribedError: () => (/* binding */ ObjectUnsubscribedError) -/* harmony export */ }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createErrorClass */ 1566); - -const ObjectUnsubscribedError = (0,_createErrorClass__WEBPACK_IMPORTED_MODULE_0__.createErrorClass)(_super => function ObjectUnsubscribedErrorImpl() { - _super(this); - this.name = 'ObjectUnsubscribedError'; - this.message = 'object unsubscribed'; -}); - -/***/ }), - -/***/ 101: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ UnsubscriptionError: () => (/* binding */ UnsubscriptionError) -/* harmony export */ }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createErrorClass */ 1566); - -const UnsubscriptionError = (0,_createErrorClass__WEBPACK_IMPORTED_MODULE_0__.createErrorClass)(_super => function UnsubscriptionErrorImpl(errors) { - _super(this); - this.message = errors ? `${errors.length} errors occurred during unsubscription: -${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\n ')}` : ''; - this.name = 'UnsubscriptionError'; - this.errors = errors; -}); - -/***/ }), - -/***/ 6190: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/args.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ popNumber: () => (/* binding */ popNumber), -/* harmony export */ popResultSelector: () => (/* binding */ popResultSelector), -/* harmony export */ popScheduler: () => (/* binding */ popScheduler) -/* harmony export */ }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); -/* harmony import */ var _isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isScheduler */ 7426); - - -function last(arr) { - return arr[arr.length - 1]; -} -function popResultSelector(args) { - return (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(last(args)) ? args.pop() : undefined; -} -function popScheduler(args) { - return (0,_isScheduler__WEBPACK_IMPORTED_MODULE_1__.isScheduler)(last(args)) ? args.pop() : undefined; -} -function popNumber(args, defaultValue) { - return typeof last(args) === 'number' ? args.pop() : defaultValue; -} - -/***/ }), - -/***/ 7346: -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ argsArgArrayOrObject: () => (/* binding */ argsArgArrayOrObject) -/* harmony export */ }); -const { - isArray -} = Array; -const { - getPrototypeOf, - prototype: objectProto, - keys: getKeys -} = Object; -function argsArgArrayOrObject(args) { - if (args.length === 1) { - const first = args[0]; - if (isArray(first)) { - return { - args: first, - keys: null - }; - } - if (isPOJO(first)) { - const keys = getKeys(first); - return { - args: keys.map(key => first[key]), - keys - }; - } - } - return { - args: args, - keys: null - }; -} -function isPOJO(obj) { - return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto; -} - -/***/ }), - -/***/ 5559: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/arrRemove.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ arrRemove: () => (/* binding */ arrRemove) -/* harmony export */ }); -function arrRemove(arr, item) { - if (arr) { - const index = arr.indexOf(item); - 0 <= index && arr.splice(index, 1); - } -} - -/***/ }), - -/***/ 1566: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ createErrorClass: () => (/* binding */ createErrorClass) -/* harmony export */ }); -function createErrorClass(createImpl) { - const _super = instance => { - Error.call(instance); - instance.stack = new Error().stack; - }; - const ctorFunc = createImpl(_super); - ctorFunc.prototype = Object.create(Error.prototype); - ctorFunc.prototype.constructor = ctorFunc; - return ctorFunc; -} - -/***/ }), - -/***/ 6118: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/createObject.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ createObject: () => (/* binding */ createObject) -/* harmony export */ }); -function createObject(keys, values) { - return keys.reduce((result, key, i) => (result[key] = values[i], result), {}); -} - -/***/ }), - -/***/ 575: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/errorContext.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ captureError: () => (/* binding */ captureError), -/* harmony export */ errorContext: () => (/* binding */ errorContext) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config */ 5445); - -let context = null; -function errorContext(cb) { - if (_config__WEBPACK_IMPORTED_MODULE_0__.config.useDeprecatedSynchronousErrorHandling) { - const isRoot = !context; - if (isRoot) { - context = { - errorThrown: false, - error: null - }; - } - cb(); - if (isRoot) { - const { - errorThrown, - error - } = context; - context = null; - if (errorThrown) { - throw error; - } - } - } else { - cb(); - } -} -function captureError(err) { - if (_config__WEBPACK_IMPORTED_MODULE_0__.config.useDeprecatedSynchronousErrorHandling && context) { - context.errorThrown = true; - context.error = err; - } -} - -/***/ }), - -/***/ 9701: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ executeSchedule: () => (/* binding */ executeSchedule) -/* harmony export */ }); -function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) { - const scheduleSubscription = scheduler.schedule(function () { - work(); - if (repeat) { - parentSubscription.add(this.schedule(null, delay)); - } else { - this.unsubscribe(); - } - }, delay); - parentSubscription.add(scheduleSubscription); - if (!repeat) { - return scheduleSubscription; - } -} - -/***/ }), - -/***/ 204: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/identity.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ identity: () => (/* binding */ identity) -/* harmony export */ }); -function identity(x) { - return x; -} - -/***/ }), - -/***/ 1287: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isArrayLike: () => (/* binding */ isArrayLike) -/* harmony export */ }); -const isArrayLike = x => x && typeof x.length === 'number' && typeof x !== 'function'; - -/***/ }), - -/***/ 5235: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isAsyncIterable: () => (/* binding */ isAsyncIterable) -/* harmony export */ }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); - -function isAsyncIterable(obj) { - return Symbol.asyncIterator && (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); -} - -/***/ }), - -/***/ 8442: -/*!************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isDate.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isValidDate: () => (/* binding */ isValidDate) -/* harmony export */ }); -function isValidDate(value) { - return value instanceof Date && !isNaN(value); -} - -/***/ }), - -/***/ 2602: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isFunction.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isFunction: () => (/* binding */ isFunction) -/* harmony export */ }); -function isFunction(value) { - return typeof value === 'function'; -} - -/***/ }), - -/***/ 7808: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isInteropObservable: () => (/* binding */ isInteropObservable) -/* harmony export */ }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../symbol/observable */ 4373); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); - - -function isInteropObservable(input) { - return (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(input[_symbol_observable__WEBPACK_IMPORTED_MODULE_1__.observable]); -} - -/***/ }), - -/***/ 9449: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isIterable.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isIterable: () => (/* binding */ isIterable) -/* harmony export */ }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../symbol/iterator */ 6691); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); - - -function isIterable(input) { - return (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(input === null || input === void 0 ? void 0 : input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_1__.iterator]); -} - -/***/ }), - -/***/ 2568: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isObservable.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isObservable: () => (/* binding */ isObservable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 2235); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isFunction */ 2602); - - -function isObservable(obj) { - return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable || (0,_isFunction__WEBPACK_IMPORTED_MODULE_1__.isFunction)(obj.lift) && (0,_isFunction__WEBPACK_IMPORTED_MODULE_1__.isFunction)(obj.subscribe)); -} - -/***/ }), - -/***/ 3972: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isPromise.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isPromise: () => (/* binding */ isPromise) -/* harmony export */ }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); - -function isPromise(value) { - return (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(value === null || value === void 0 ? void 0 : value.then); -} - -/***/ }), - -/***/ 401: -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isReadableStreamLike: () => (/* binding */ isReadableStreamLike), -/* harmony export */ readableStreamLikeToAsyncGenerator: () => (/* binding */ readableStreamLikeToAsyncGenerator) -/* harmony export */ }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 2321); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isFunction */ 2602); - - -function readableStreamLikeToAsyncGenerator(readableStream) { - return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__asyncGenerator)(this, arguments, function* readableStreamLikeToAsyncGenerator_1() { - const reader = readableStream.getReader(); - try { - while (true) { - const { - value, - done - } = yield (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__await)(reader.read()); - if (done) { - return yield (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__await)(void 0); - } - yield yield (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__await)(value); - } - } finally { - reader.releaseLock(); - } - }); -} -function isReadableStreamLike(obj) { - return (0,_isFunction__WEBPACK_IMPORTED_MODULE_1__.isFunction)(obj === null || obj === void 0 ? void 0 : obj.getReader); -} - -/***/ }), - -/***/ 7426: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/isScheduler.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isScheduler: () => (/* binding */ isScheduler) -/* harmony export */ }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); - -function isScheduler(value) { - return value && (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(value.schedule); -} - -/***/ }), - -/***/ 4114: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/lift.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ hasLift: () => (/* binding */ hasLift), -/* harmony export */ operate: () => (/* binding */ operate) -/* harmony export */ }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isFunction */ 2602); - -function hasLift(source) { - return (0,_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(source === null || source === void 0 ? void 0 : source.lift); -} -function operate(init) { - return source => { - if (hasLift(source)) { - return source.lift(function (liftedSource) { - try { - return init(liftedSource, this); - } catch (err) { - this.error(err); - } - }); - } - throw new TypeError('Unable to lift unknown Observable type'); - }; -} - -/***/ }), - -/***/ 7825: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mapOneOrManyArgs: () => (/* binding */ mapOneOrManyArgs) -/* harmony export */ }); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../operators/map */ 9736); - -const { - isArray -} = Array; -function callOrApply(fn, args) { - return isArray(args) ? fn(...args) : fn(args); -} -function mapOneOrManyArgs(fn) { - return (0,_operators_map__WEBPACK_IMPORTED_MODULE_0__.map)(args => callOrApply(fn, args)); -} - -/***/ }), - -/***/ 2707: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/noop.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ noop: () => (/* binding */ noop) -/* harmony export */ }); -function noop() {} - -/***/ }), - -/***/ 2476: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/pipe.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ pipe: () => (/* binding */ pipe), -/* harmony export */ pipeFromArray: () => (/* binding */ pipeFromArray) -/* harmony export */ }); -/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity */ 204); - -function pipe(...fns) { - return pipeFromArray(fns); -} -function pipeFromArray(fns) { - if (fns.length === 0) { - return _identity__WEBPACK_IMPORTED_MODULE_0__.identity; - } - if (fns.length === 1) { - return fns[0]; - } - return function piped(input) { - return fns.reduce((prev, fn) => fn(prev), input); - }; -} - -/***/ }), - -/***/ 6929: -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ reportUnhandledError: () => (/* binding */ reportUnhandledError) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ 5445); -/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/timeoutProvider */ 8411); - - -function reportUnhandledError(err) { - _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_0__.timeoutProvider.setTimeout(() => { - const { - onUnhandledError - } = _config__WEBPACK_IMPORTED_MODULE_1__.config; - if (onUnhandledError) { - onUnhandledError(err); - } else { - throw err; - } - }); -} - -/***/ }), - -/***/ 2614: -/*!****************************************************************************!*\ - !*** ./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js ***! - \****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ createInvalidObservableTypeError: () => (/* binding */ createInvalidObservableTypeError) -/* harmony export */ }); -function createInvalidObservableTypeError(input) { - return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`); -} - -/***/ }), - -/***/ 7334: -/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./src/app/components/controls/alert/alert.service.ts.scss?ngResource!=!./node_modules/@ngtools/webpack/src/loaders/inline-resource.js?data=CiAgICAuc3VjY2VzcyB7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgbWFyZ2luOiAtMXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEJDMzRBOwogICAgfQogICAgLmVycm9yIHsKICAgICAgY29sb3I6IHdoaXRlOwogICAgICBwYWRkaW5nOiAxcmVtOwogICAgICBtYXJnaW46IC0xcmVtOwogICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7CiAgICB9CgogIA%3D%3D!./src/app/components/controls/alert/alert.service.ts ***! - \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.success { - color: white; - padding: 1rem; - margin: -1rem; - border-radius: 4px; - background-color: #8BC34A; -} - -.error { - color: white; - padding: 1rem; - margin: -1rem; - border-radius: 4px; - background-color: #F44336; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/alert/alert.service.ts"],"names":[],"mappings":"AACI;EACE,YAAA;EACA,aAAA;EACA,aAAA;EACA,kBAAA;EACA,yBAAA;AAAN;;AAEI;EACE,YAAA;EACA,aAAA;EACA,aAAA;EACA,kBAAA;EACA,yBAAA;AACN","sourcesContent":["\n .success {\n color: white;\n padding: 1rem;\n margin: -1rem;\n border-radius: 4px;\n background-color: #8BC34A;\n }\n .error {\n color: white;\n padding: 1rem;\n margin: -1rem;\n border-radius: 4px;\n background-color: #F44336;\n }\n\n "],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 9595: -/*!***********************************************!*\ - !*** ./src/app/app.component.scss?ngResource ***! - \***********************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.init-status-wrapper { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 999; - -webkit-backdrop-filter: blur(10px); - backdrop-filter: blur(10px); - transition: all 0.6s; -} - -.progress-upload { - position: absolute; - background: white; - padding: 2rem 4rem; - z-index: 999; - border-radius: 0.5rem; - box-shadow: 2px 1px 20px -7px #000; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin: auto; - display: block; - width: 450px; - height: 100px; - text-align: center; - overflow: hidden; -} -.progress-upload .progress-bar { - background-color: rgba(100, 100, 255, 0.5); - position: absolute; - width: 0%; - height: 100px; - left: 0; - top: 0; - -webkit-backdrop-filter: invert(1); - backdrop-filter: invert(1); -} - -.init-status-wrapper.ready { - -webkit-backdrop-filter: blur(0px); - backdrop-filter: blur(0px); -} - -.init-status { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; - width: 400px; - min-height: 50px; - height: 400px; - padding: 2rem; - z-index: 999; - background-color: rgba(255, 255, 255, 0.9); - box-shadow: 0 0 15px #bbb; -} - -.init-status > div { - text-align: left; - font-size: 16pt; - height: 50px; -}`, "",{"version":3,"sources":["webpack://./src/app/app.component.scss"],"names":[],"mappings":"AAAA;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,mCAAA;UAAA,2BAAA;EACA,oBAAA;AACF;;AAEA;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,YAAA;EACA,qBAAA;EACA,kCAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA;EACA,YAAA;EACA,cAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;AACF;AACE;EACE,0CAAA;EACA,kBAAA;EACA,SAAA;EACA,aAAA;EACA,OAAA;EACA,MAAA;EACA,kCAAA;UAAA,0BAAA;AACJ;;AAGA;EACE,kCAAA;UAAA,0BAAA;AAAF;;AAGA;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;EACA,aAAA;EACA,aAAA;EACA,YAAA;EACA,0CAAA;EACA,yBAAA;AAAF;;AAGA;EACE,gBAAA;EACA,eAAA;EACA,YAAA;AAAF","sourcesContent":[".init-status-wrapper {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 999;\r\n backdrop-filter: blur(10px);\r\n transition: all 0.6s;\r\n}\r\n\r\n.progress-upload {\r\n position: absolute;\r\n background: white;\r\n padding: 2rem 4rem;\r\n z-index: 999;\r\n border-radius: 0.5rem;\r\n box-shadow: 2px 1px 20px -7px #000;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n margin: auto;\r\n display: block;\r\n width: 450px;\r\n height: 100px;\r\n text-align: center;\r\n overflow: hidden;\r\n\r\n .progress-bar {\r\n background-color: rgba(100, 100, 255, 0.5);\r\n position: absolute;\r\n width: 0%;\r\n height: 100px;\r\n left: 0;\r\n top: 0;\r\n backdrop-filter: invert(1);\r\n }\r\n}\r\n\r\n.init-status-wrapper.ready {\r\n backdrop-filter: blur(0px);\r\n}\r\n\r\n.init-status {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n margin: auto;\r\n width: 400px;\r\n min-height: 50px;\r\n height: 400px;\r\n padding: 2rem;\r\n z-index: 999;\r\n background-color: rgba(255, 255, 255, 0.9);\r\n box-shadow: 0 0 15px #bbb;\r\n}\r\n\r\n.init-status>div {\r\n text-align: left;\r\n font-size: 16pt;\r\n height: 50px;\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 6482: -/*!****************************************************************!*\ - !*** ./src/app/components/Home/Home.component.scss?ngResource ***! - \****************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.mat-radio-button ~ .mat-radio-button { - margin-left: 16px; -} - -.grid-content { - padding: 2px; - background-color: white; - border: 1px solid #999; -} - -.body-container { - display: flex; - flex-direction: column; - height: 100vh; - overflow: hidden; -} - -.example-container { - width: 100%; - min-width: 400px; -} - -.example-sidenav-content { - display: flex; - height: 100%; - justify-content: space-between; -} - -.example-sidenav { - padding: 0rem; - min-width: 10rem; -}`, "",{"version":3,"sources":["webpack://./src/app/components/Home/Home.component.scss"],"names":[],"mappings":"AACA;EACE,iBAAA;AAAF;;AAGA;EACE,YAAA;EAEA,uBAAA;EACA,sBAAA;AADF;;AAIA;EACE,aAAA;EACA,sBAAA;EACA,aAAA;EACA,gBAAA;AADF;;AAIA;EACE,WAAA;EACA,gBAAA;AADF;;AAIA;EACE,aAAA;EACA,YAAA;EACA,8BAAA;AADF;;AAIA;EACE,aAAA;EACA,gBAAA;AADF","sourcesContent":["\r\n.mat-radio-button ~ .mat-radio-button {\r\n margin-left: 16px;\r\n}\r\n\r\n.grid-content {\r\n padding: 2px;\r\n // margin: 2px;\r\n background-color: white;\r\n border: 1px solid #999;\r\n}\r\n\r\n.body-container {\r\n display: flex;\r\n flex-direction: column;\r\n height: 100vh;\r\n overflow: hidden;\r\n}\r\n\r\n.example-container {\r\n width: 100%;\r\n min-width: 400px;\r\n}\r\n\r\n.example-sidenav-content {\r\n display: flex;\r\n height: 100%;\r\n justify-content: space-between;\r\n}\r\n\r\n.example-sidenav {\r\n padding: 0rem;\r\n min-width: 10rem;\r\n}\r\n\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 8058: -/*!***********************************************************************************************!*\ - !*** ./src/app/components/controls/chart-and-table/chart-and-table.component.scss?ngResource ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, ``, "",{"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 3044: -/*!*****************************************************************************************!*\ - !*** ./src/app/components/controls/custom-table/custom-table.component.scss?ngResource ***! - \*****************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `table.this-table { - table-layout: fixed; -} -table.this-table tr { - transition: background-color 0.3s; - height: 38px; -} -table.this-table tr:hover { - background-color: rgba(0, 0, 0, 0.12); - cursor: pointer; -} -table.this-table th, table.this-table td { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - border-bottom: 1px solid rgba(0, 0, 0, 0.2); -} - -.mat-row:nth-child(2n+1) { - background-color: #e4f0ec; -} -.mat-row:not(:nth-child(2n+1)) { - background-color: #ffffff; -} - -.itemSelected { - background-color: #3f51b5 !important; - color: #fff !important; -} - -.search-input { - border: 0; - background-color: rgba(0, 0, 0, 0.12); - outline: none; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/custom-table/custom-table.component.scss"],"names":[],"mappings":"AAEA;EACE,mBAAA;AADF;AAKE;EACE,iCAAA;EACA,YAAA;AAHJ;AAKI;EACE,qCAZI;EAaJ,eAAA;AAHN;AAOE;EAGE,gBAAA;EACA,mBAAA;EACA,uBAAA;EACA,2CAAA;AAPJ;;AAYE;EACE,yBAAA;AATJ;AAYE;EACE,yBAAA;AAVJ;;AAaA;EACE,oCAAA;EACA,sBAAA;AAVF;;AAYA;EACE,SAAA;EACA,qCA1CQ;EA2CR,aAAA;AATF","sourcesContent":["$bgColor: rgba(black, 0.12);\r\n\r\ntable.this-table {\r\n table-layout: fixed;\r\n // width: 100%;\r\n // max-width: 100%;\r\n\r\n & tr {\r\n transition: background-color 0.3s;\r\n height: 38px;\r\n\r\n &:hover {\r\n background-color: $bgColor;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n & th,\r\n & td {\r\n // padding: 1rem;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n border-bottom: 1px solid rgb(0 0 0 / 20%);\r\n }\r\n}\r\n\r\n.mat-row {\r\n &:nth-child(2n+1) {\r\n background-color: #e4f0ec;\r\n }\r\n\r\n &:not(:nth-child(2n+1)) {\r\n background-color: #ffffff;\r\n }\r\n}\r\n.itemSelected {\r\n background-color: #3f51b5 !important;\r\n color: #fff !important;\r\n}\r\n.search-input {\r\n border: 0;\r\n background-color: $bgColor;\r\n outline: none;\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 1395: -/*!*********************************************************************************************!*\ - !*** ./src/app/components/controls/flexible-chart/flexible-chart.component.scss?ngResource ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, ``, "",{"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 2996: -/*!***********************************************************************************!*\ - !*** ./src/app/components/controls/frame-hex/frame-hex.component.scss?ngResource ***! - \***********************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `:host { - max-height: 100%; - overflow: auto; - background-color: white; - scroll-behavior: smooth; -} -:host .panel { - position: sticky; - top: 0px; - background-color: white; - border-bottom: 2px solid rgba(0, 0, 0, 0.2); -} -:host .col-index { - padding: 0 4px; - margin-right: 1rem; - font-family: monospace; -} -:host .col-hex { - font-family: monospace; - padding: 0 4px; -} -:host .col-hex:hover { - background-color: #abb3e0; -} -:host .col-hex:nth-child(8n+1) { - padding-right: 1rem; -} -:host .selected { - background-color: #3f51b5; - color: white; -} -:host .col-char { - font-family: monospace; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/frame-hex/frame-hex.component.scss"],"names":[],"mappings":"AAAA;EACE,gBAAA;EACA,cAAA;EACA,uBAAA;EACA,uBAAA;AACF;AACE;EACE,gBAAA;EACA,QAAA;EACA,uBAAA;EACA,2CAAA;AACJ;AACE;EACE,cAAA;EACA,kBAAA;EACA,sBAAA;AACJ;AAEE;EACE,sBAAA;EACA,cAAA;AAAJ;AACI;EACE,yBAAA;AACN;AAEI;EACE,mBAAA;AAAN;AAKE;EACE,yBAAA;EACA,YAAA;AAHJ;AAME;EACE,sBAAA;AAJJ","sourcesContent":[":host {\r\n max-height: 100%;\r\n overflow: auto;\r\n background-color: white;\r\n scroll-behavior: smooth;\r\n\r\n .panel {\r\n position: sticky;\r\n top: 0px;\r\n background-color: white;\r\n border-bottom: 2px solid rgba(0, 0, 0, 0.2);\r\n }\r\n .col-index {\r\n padding: 0 4px;\r\n margin-right: 1rem;\r\n font-family: monospace;\r\n }\r\n\r\n .col-hex {\r\n font-family: monospace;\r\n padding: 0 4px;\r\n &:hover {\r\n background-color: #abb3e0;\r\n }\r\n\r\n &:nth-child(8n+1) {\r\n padding-right: 1rem;\r\n }\r\n\r\n }\r\n\r\n .selected {\r\n background-color: #3f51b5;\r\n color: white;\r\n }\r\n\r\n .col-char {\r\n font-family: monospace;\r\n }\r\n\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 7202: -/*!***********************************************************************************!*\ - !*** ./src/app/components/controls/menu-stat/menu-stat.component.scss?ngResource ***! - \***********************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, ``, "",{"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 6667: -/*!***********************************************************************************************!*\ - !*** ./src/app/components/controls/modal-resizable/modal-resizable.component.scss?ngResource ***! - \***********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `@keyframes expand { - from { - transform: scale(0); - opacity: 0; - background: #5470B0; - } -} -.on-top { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - display: flex; - align-items: center; - justify-content: center; - width: 1px; - height: 1px; - margin: auto; -} -.on-top .active { - width: 100vw; - height: 100vh; -} - -.detail-container { - animation: expand 0.3s ease-in-out; - position: relative; - min-width: 200px; - min-height: 200px; - width: 60vw; - border: solid 1px #ccc; - color: rgba(0, 0, 0, 0.87); - justify-content: center; - padding: 1.5rem; - overflow: hidden; - background: #fff; - border-radius: 4px; - z-index: 1; - opacity: 1; - transition: all 0.3s; - box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); -} -.detail-container .title { - cursor: move; - display: flex; - height: 2.5rem; -} -.detail-container .title .toolbar-title { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: 14pt; -} -.detail-container .title div:first-child { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.detail-container .title div:last-child { - display: flex; -} -.detail-container:active { - box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); -} -.detail-container.full-page { - border: solid 0px #ccc; - border-radius: 0px; - min-width: 100vw !important; - width: 100vw !important; - min-height: 100vh !important; - transform: translate3d(0px, 0px, 0px) !important; -} -.detail-container table { - width: 100%; - overflow: auto; -} -.detail-container table tr:hover { - background-color: rgba(0, 0, 0, 0.12); - cursor: pointer; -} - -.title { - margin: -1.5rem -1.5rem 0 -1.5rem; - width: initial !important; - display: flex; - justify-content: space-between; -} - -.inside-content { - position: absolute; - left: 0; - right: 0; - top: 45px; - bottom: 0.3rem; - z-index: -1; - overflow: auto; -} - -.animation-off { - transition: none; -} - -.resize { - position: absolute; -} -.resize.right { - width: 0.5rem; - right: -0.3rem; - height: 100%; - top: 0; - cursor: ew-resize; -} -.resize.bottom { - bottom: -0.3rem; - height: 0.5rem; - width: 100%; - left: 0; - cursor: ns-resize; -} -.resize.left { - width: 0.5rem; - left: 0; - height: 100%; - top: 0; - cursor: ew-resize; -} -.resize.top { - top: 0; - height: 0.5rem; - width: 100%; - left: 0; - cursor: ns-resize; -} -.resize.corner { - width: 0.5rem; - height: 0.5rem; - cursor: nwse-resize; -} -.resize.corner.tl { - top: 0; - left: 0; -} -.resize.corner.tr { - top: 0; - right: 0; - cursor: nesw-resize; -} -.resize.corner.bl { - bottom: 0; - left: 0; - cursor: nesw-resize; -} -.resize.corner.br { - right: 0; - bottom: 0; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/modal-resizable/modal-resizable.component.scss"],"names":[],"mappings":"AAAA;EACE;IACE,mBAAA;IACA,UAAA;IACA,mBAAA;EACF;AACF;AAGA;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;AADF;AAIE;EACE,YAAA;EACA,aAAA;AAFJ;;AAMA;EACE,kCAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,WAAA;EACA,sBAAA;EACA,0BAAA;EACA,uBAAA;EACA,eAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,UAAA;EACA,UAAA;EACA,oBAAA;EACA,+GAAA;AAHF;AAOE;EACE,YAAA;EACA,aAAA;EACA,cAAA;AALJ;AAOI;EACE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,eAAA;AALN;AASI;EACE,gBAAA;EACA,mBAAA;EACA,uBAAA;AAPN;AAUI;EACE,aAAA;AARN;AAaE;EACE,qHAAA;AAXJ;AAgBE;EACE,sBAAA;EACA,kBAAA;EACA,2BAAA;EACA,uBAAA;EACA,4BAAA;EACA,gDAAA;AAdJ;AAiBE;EACE,WAAA;EACA,cAAA;AAfJ;AAkBM;EACE,qCAAA;EACA,eAAA;AAhBR;;AAsBA;EACE,iCAAA;EACA,yBAAA;EACA,aAAA;EACA,8BAAA;AAnBF;;AAsBA;EACE,kBAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,cAAA;EACA,WAAA;EACA,cAAA;AAnBF;;AAsBA;EACE,gBAAA;AAnBF;;AAsBA;EACE,kBAAA;AAnBF;AAsBE;EACE,aAAA;EACA,cAAA;EACA,YAAA;EACA,MAAA;EACA,iBAAA;AApBJ;AAuBE;EACE,eAAA;EACA,cAAA;EACA,WAAA;EACA,OAAA;EACA,iBAAA;AArBJ;AAwBE;EACE,aAAA;EACA,OAAA;EACA,YAAA;EACA,MAAA;EACA,iBAAA;AAtBJ;AAyBE;EACE,MAAA;EACA,cAAA;EACA,WAAA;EACA,OAAA;EACA,iBAAA;AAvBJ;AA0BE;EACE,aAAA;EACA,cAAA;EACA,mBAAA;AAxBJ;AA0BI;EACE,MAAA;EACA,OAAA;AAxBN;AA2BI;EACE,MAAA;EACA,QAAA;EACA,mBAAA;AAzBN;AA4BI;EACE,SAAA;EACA,OAAA;EACA,mBAAA;AA1BN;AA6BI;EACE,QAAA;EACA,SAAA;AA3BN","sourcesContent":["@keyframes expand {\r\n from {\r\n transform: scale(0);\r\n opacity: 0;\r\n background: #5470B0;\r\n }\r\n}\r\n\r\n\r\n.on-top {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 1px;\r\n height: 1px;\r\n margin: auto;\r\n\r\n //\r\n .active {\r\n width: 100vw;\r\n height: 100vh;\r\n }\r\n}\r\n\r\n.detail-container {\r\n animation: expand .3s ease-in-out;\r\n position: relative;\r\n min-width: 200px;\r\n min-height: 200px;\r\n width: 60vw;\r\n border: solid 1px #ccc;\r\n color: rgba(0, 0, 0, 0.87);\r\n justify-content: center;\r\n padding: 1.5rem;\r\n overflow: hidden;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n opacity: 1;\r\n transition: all 0.3s;\r\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2),\r\n 0 2px 2px 0 rgba(0, 0, 0, 0.14),\r\n 0 1px 5px 0 rgba(0, 0, 0, 0.12);\r\n\r\n .title {\r\n cursor: move;\r\n display: flex;\r\n height: 2.5rem;\r\n\r\n .toolbar-title {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n font-size: 14pt;\r\n // font-weight: bold;\r\n }\r\n\r\n div:first-child {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n div:last-child {\r\n display: flex;\r\n // min-width: 120px;\r\n }\r\n }\r\n\r\n &:active {\r\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),\r\n 0 8px 10px 1px rgba(0, 0, 0, 0.14),\r\n 0 3px 14px 2px rgba(0, 0, 0, 0.12);\r\n }\r\n\r\n &.full-page {\r\n border: solid 0px #ccc;\r\n border-radius: 0px;\r\n min-width: 100vw !important;\r\n width: 100vw !important;\r\n min-height: 100vh !important;\r\n transform: translate3d(0px, 0px, 0px) !important;\r\n }\r\n\r\n table {\r\n width: 100%;\r\n overflow: auto;\r\n\r\n tr {\r\n &:hover {\r\n background-color: rgba(0, 0, 0, 0.12);\r\n cursor: pointer;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.title {\r\n margin: -1.5rem -1.5rem 0 -1.5rem;\r\n width: initial !important;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n\r\n.inside-content {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 45px;\r\n bottom: 0.3rem;\r\n z-index: -1;\r\n overflow: auto;\r\n}\r\n\r\n.animation-off {\r\n transition: none;\r\n}\r\n\r\n.resize {\r\n position: absolute;\r\n\r\n // background-color: rgb(144 238 144 / 50%);\r\n &.right {\r\n width: 0.5rem;\r\n right: -0.3rem;\r\n height: 100%;\r\n top: 0;\r\n cursor: ew-resize;\r\n }\r\n\r\n &.bottom {\r\n bottom: -0.3rem;\r\n height: 0.5rem;\r\n width: 100%;\r\n left: 0;\r\n cursor: ns-resize;\r\n }\r\n\r\n &.left {\r\n width: 0.5rem;\r\n left: 0;\r\n height: 100%;\r\n top: 0;\r\n cursor: ew-resize;\r\n }\r\n\r\n &.top {\r\n top: 0;\r\n height: 0.5rem;\r\n width: 100%;\r\n left: 0;\r\n cursor: ns-resize;\r\n }\r\n\r\n &.corner {\r\n width: 0.5rem;\r\n height: 0.5rem;\r\n cursor: nwse-resize;\r\n\r\n &.tl {\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n &.tr {\r\n top: 0;\r\n right: 0;\r\n cursor: nesw-resize;\r\n }\r\n\r\n &.bl {\r\n bottom: 0;\r\n left: 0;\r\n cursor: nesw-resize;\r\n }\r\n\r\n &.br {\r\n right: 0;\r\n bottom: 0;\r\n }\r\n }\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 1767: -/*!*******************************************************************************!*\ - !*** ./src/app/components/controls/no-data/no-data.component.scss?ngResource ***! - \*******************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `:host { - height: 100%; -} -:host .is-no-data { - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; - height: 100%; -} -:host .is-no-data h1 { - font-size: 55pt; - opacity: 0.3; -} - -.lds-container { - width: 100%; - height: 100%; - background: #fafafa; - display: flex; - justify-content: center; - align-items: center; - border-radius: 6px; - z-index: 1000; -} - -.lds-ring { - display: inline-block; - position: relative; - width: 80px; - height: 80px; -} - -.lds-ring div { - box-sizing: border-box; - display: block; - position: absolute; - width: 64px; - height: 64px; - margin: 8px; - border: 8px solid #26bfbc; - border-radius: 50%; - animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; - border-color: #26bfbc transparent transparent transparent; -} - -.lds-ring div:nth-child(1) { - animation-delay: -0.45s; -} - -.lds-ring div:nth-child(2) { - animation-delay: -0.3s; -} - -.lds-ring div:nth-child(3) { - animation-delay: -0.15s; -} - -@keyframes lds-ring { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/no-data/no-data.component.scss"],"names":[],"mappings":"AAAA;EACE,YAAA;AACF;AACE;EACE,aAAA;EACA,sBAAA;EACA,uBAAA;EACA,kBAAA;EACA,YAAA;AACJ;AACI;EACE,eAAA;EACA,YAAA;AACN;;AAIA;EACE,WAAA;EACA,YAAA;EACA,mBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,kBAAA;EACA,aAAA;AADF;;AAIA;EACE,qBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;AADF;;AAIA;EACE,sBAAA;EACA,cAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,yBAAA;EACA,kBAAA;EACA,8DAAA;EACA,yDAAA;AADF;;AAIA;EACE,uBAAA;AADF;;AAIA;EACE,sBAAA;AADF;;AAIA;EACE,uBAAA;AADF;;AAIA;EACE;IACE,uBAAA;EADF;EAIA;IACE,yBAAA;EAFF;AACF","sourcesContent":[":host {\r\n height: 100%;\r\n\r\n .is-no-data {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n text-align: center;\r\n height: 100%;\r\n\r\n h1 {\r\n font-size: 55pt;\r\n opacity: 0.3;\r\n }\r\n }\r\n}\r\n\r\n.lds-container {\r\n width: 100%;\r\n height: 100%;\r\n background: #fafafa;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n border-radius: 6px;\r\n z-index: 1000;\r\n}\r\n\r\n.lds-ring {\r\n display: inline-block;\r\n position: relative;\r\n width: 80px;\r\n height: 80px;\r\n}\r\n\r\n.lds-ring div {\r\n box-sizing: border-box;\r\n display: block;\r\n position: absolute;\r\n width: 64px;\r\n height: 64px;\r\n margin: 8px;\r\n border: 8px solid #26bfbc;\r\n border-radius: 50%;\r\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\r\n border-color: #26bfbc transparent transparent transparent;\r\n}\r\n\r\n.lds-ring div:nth-child(1) {\r\n animation-delay: -0.45s;\r\n}\r\n\r\n.lds-ring div:nth-child(2) {\r\n animation-delay: -0.3s;\r\n}\r\n\r\n.lds-ring div:nth-child(3) {\r\n animation-delay: -0.15s;\r\n}\r\n\r\n@keyframes lds-ring {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 3874: -/*!*******************************************************************************************!*\ - !*** ./src/app/components/controls/pcap-uploader/pcap-uploader.component.scss?ngResource ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.file-upload-container { - position: relative; - height: 100%; -} -.file-upload-container > .fileselect { - align-items: center; - background-color: #eee; - border-radius: 1rem; - border-style: dashed; - color: #999; - cursor: pointer; - display: flex; - height: 100%; - justify-content: center; - margin: 0; - min-width: 200px; - padding: 1rem; -} -.file-upload-container > .fileselect::before { - content: "Drop PCAP file here"; -} -.file-upload-container > .fileselect.drugOver { - background-color: #ccc; -} -.file-upload-container > input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - bottom: 0; - right: 0; - cursor: pointer; - opacity: 0; -} - -.lds-container { - width: 100%; - height: 100%; - background: #fafafa; - display: flex; - justify-content: center; - align-items: center; - border-radius: 6px; - z-index: 1000; -} - -.lds-ring { - display: inline-block; - position: relative; - width: 80px; - height: 80px; -} - -.lds-ring div { - box-sizing: border-box; - display: block; - position: absolute; - width: 64px; - height: 64px; - margin: 8px; - border: 8px solid #26bfbc; - border-radius: 50%; - animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; - border-color: #26bfbc transparent transparent transparent; -} - -.lds-ring div:nth-child(1) { - animation-delay: -0.45s; -} - -.lds-ring div:nth-child(2) { - animation-delay: -0.3s; -} - -.lds-ring div:nth-child(3) { - animation-delay: -0.15s; -} - -@keyframes lds-ring { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/pcap-uploader/pcap-uploader.component.scss"],"names":[],"mappings":"AAAA;EACC,kBAAA;EACA,YAAA;AACD;AACC;EACC,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,oBAAA;EACA,WAAA;EACA,eAAA;EACA,aAAA;EACA,YAAA;EACA,uBAAA;EACA,SAAA;EACA,gBAAA;EACA,aAAA;AACF;AACE;EACC,8BAAA;AACH;AAEE;EACC,sBAAA;AAAH;AAIC;EACC,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,QAAA;EACA,eAAA;EACA,UAAA;AAFF;;AAMA;EACC,WAAA;EACA,YAAA;EACA,mBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,kBAAA;EACA,aAAA;AAHD;;AAKA;EACC,qBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;AAFD;;AAKA;EACC,sBAAA;EACA,cAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,yBAAA;EACA,kBAAA;EACA,8DAAA;EACA,yDAAA;AAFD;;AAKA;EACC,uBAAA;AAFD;;AAKA;EACC,sBAAA;AAFD;;AAKA;EACC,uBAAA;AAFD;;AAKA;EACC;IACC,uBAAA;EAFA;EAKD;IACC,yBAAA;EAHA;AACF","sourcesContent":[".file-upload-container {\r\n\tposition: relative;\r\n\theight: 100%;\r\n\r\n\t&>.fileselect {\r\n\t\talign-items: center;\r\n\t\tbackground-color: #eee;\r\n\t\tborder-radius: 1rem;\r\n\t\tborder-style: dashed;\r\n\t\tcolor: #999;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: flex;\r\n\t\theight: 100%;\r\n\t\tjustify-content: center;\r\n\t\tmargin: 0;\r\n\t\tmin-width: 200px;\r\n\t\tpadding: 1rem;\r\n\r\n\t\t&::before {\r\n\t\t\tcontent: \"Drop PCAP file here\";\r\n\t\t}\r\n\r\n\t\t&.drugOver {\r\n\t\t\tbackground-color: #ccc;\r\n\t\t}\r\n\t}\r\n\r\n\t&>input[type=\"file\"] {\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t\tbottom: 0;\r\n\t\tright: 0;\r\n\t\tcursor: pointer;\r\n\t\topacity: 0;\r\n\t}\r\n}\r\n\r\n.lds-container {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tbackground: #fafafa;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tborder-radius: 6px;\r\n\tz-index: 1000;\r\n}\r\n.lds-ring {\r\n\tdisplay: inline-block;\r\n\tposition: relative;\r\n\twidth: 80px;\r\n\theight: 80px;\r\n}\r\n\r\n.lds-ring div {\r\n\tbox-sizing: border-box;\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\twidth: 64px;\r\n\theight: 64px;\r\n\tmargin: 8px;\r\n\tborder: 8px solid #26bfbc;\r\n\tborder-radius: 50%;\r\n\tanimation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\r\n\tborder-color: #26bfbc transparent transparent transparent;\r\n}\r\n\r\n.lds-ring div:nth-child(1) {\r\n\tanimation-delay: -0.45s;\r\n}\r\n\r\n.lds-ring div:nth-child(2) {\r\n\tanimation-delay: -0.3s;\r\n}\r\n\r\n.lds-ring div:nth-child(3) {\r\n\tanimation-delay: -0.15s;\r\n}\r\n\r\n@keyframes lds-ring {\r\n\t0% {\r\n\t\ttransform: rotate(0deg);\r\n\t}\r\n\r\n\t100% {\r\n\t\ttransform: rotate(360deg);\r\n\t}\r\n}"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 6364: -/*!*************************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-flow/tap-flow.component.scss?ngResource ***! - \*************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.grid-content { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - margin: 0; - min-width: 100px; -} -.grid-content.selected { - background-color: rgba(63, 81, 181, 0.7); - color: #fff; -} -.grid-content.f-end > div { - align-items: flex-end; -} -.grid-content .host { - border-bottom: 1px solid #999; -} -.grid-content.col-line { - border-right: 1px dashed #999; -} -.grid-content .arrow { - border-bottom: 2px solid; - position: relative; - width: 100%; - min-width: 100%; - max-width: 100%; -} -.grid-content .arrow::before { - content: ""; - border: 7px solid transparent; - border-left: 14px solid; - position: absolute; - right: -8px; - bottom: -7.5px; -} -.grid-content .arrow.left:before { - content: ""; - border: 7px solid transparent; - border-right: 14px solid; - position: absolute; - right: initial; - left: -8px; - bottom: -7.5px; -} -.grid-content.item { - cursor: pointer; -} -.grid-content .item-element { - flex: 1; - text-align: center; - max-width: 100%; -} -.grid-content span { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: 0.8em; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/tap/tap-flow/tap-flow.component.scss"],"names":[],"mappings":"AAAA;EACE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,SAAA;EACA,gBAAA;AACF;AACE;EACE,wCAAA;EACA,WAAA;AACJ;AAEE;EACE,qBAAA;AAAJ;AAGE;EACE,6BAAA;AADJ;AAIE;EACE,6BAAA;AAFJ;AAKE;EACE,wBAAA;EACA,kBAAA;EACA,WAAA;EACA,eAAA;EACA,eAAA;AAHJ;AAKI;EACE,WAAA;EACA,6BAAA;EACA,uBAAA;EACA,kBAAA;EACA,WAAA;EACA,cAAA;AAHN;AAQM;EACE,WAAA;EACA,6BAAA;EACA,wBAAA;EACA,kBAAA;EACA,cAAA;EACA,UAAA;EACA,cAAA;AANR;AAWE;EAEE,eAAA;AAVJ;AAaE;EACE,OAAA;EACA,kBAAA;EACA,eAAA;AAXJ;AAeE;EACE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;AAbJ","sourcesContent":[".grid-content {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n margin: 0;\r\n min-width: 100px;\r\n\r\n &.selected {\r\n background-color: rgba(#3f51b5, 70%);\r\n color: #fff;\r\n }\r\n\r\n &.f-end>div {\r\n align-items: flex-end;\r\n }\r\n\r\n .host {\r\n border-bottom: 1px solid #999;\r\n }\r\n\r\n &.col-line {\r\n border-right: 1px dashed #999;\r\n }\r\n\r\n .arrow {\r\n border-bottom: 2px solid;\r\n position: relative;\r\n width: 100%;\r\n min-width: 100%;\r\n max-width: 100%;\r\n\r\n &::before {\r\n content: \"\";\r\n border: 7px solid transparent;\r\n border-left: 14px solid;\r\n position: absolute;\r\n right: -8px;\r\n bottom: -7.5px;\r\n\r\n }\r\n\r\n &.left {\r\n &:before {\r\n content: \"\";\r\n border: 7px solid transparent;\r\n border-right: 14px solid;\r\n position: absolute;\r\n right: initial;\r\n left: -8px;\r\n bottom: -7.5px;\r\n }\r\n }\r\n }\r\n\r\n &.item {\r\n // background-color: lightgreen;\r\n cursor: pointer;\r\n }\r\n\r\n .item-element {\r\n flex: 1;\r\n text-align: center;\r\n max-width: 100%;\r\n\r\n }\r\n\r\n span {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n font-size: 0.8em;\r\n }\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 470: -/*!****************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-page.component.scss?ngResource ***! - \****************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `:host { - position: relative; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/tap/tap-page.component.scss"],"names":[],"mappings":"AAAA;EACE,kBAAA;AACF","sourcesContent":[":host {\r\n position: relative;\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 1320: -/*!***************************************************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-rtp-streams/stream-detail/stream-detail.component.scss?ngResource ***! - \***************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.player-card-data { - display: flex; -} -.player-card-data > div { - padding: 0.5rem; -} - -.top-container { - display: flex; - margin-bottom: 3rem; - flex-direction: column; - top: 0; - z-index: 1; -} - -.labels ::ng-deep .mdc-checkbox { - display: none !important; -}`, "",{"version":3,"sources":["webpack://./src/app/components/controls/tap/tap-rtp-streams/stream-detail/stream-detail.component.scss"],"names":[],"mappings":"AAAA;EACE,aAAA;AACF;AAAE;EACE,eAAA;AAEJ;;AACA;EACE,aAAA;EACA,mBAAA;EACA,sBAAA;EAEA,MAAA;EACA,UAAA;AACF;;AAEA;EACE,wBAAA;AACF","sourcesContent":[".player-card-data {\r\n display: flex;\r\n & > div {\r\n padding: 0.5rem;\r\n }\r\n}\r\n.top-container {\r\n display: flex;\r\n margin-bottom: 3rem;\r\n flex-direction: column;\r\n // position: sticky;\r\n top: 0;\r\n z-index: 1;\r\n}\r\n\r\n.labels ::ng-deep .mdc-checkbox {\r\n display: none !important;\r\n}\r\n"],"sourceRoot":""}]); -// Exports -module.exports = ___CSS_LOADER_EXPORT___.toString(); - - -/***/ }), - -/***/ 9730: -/*!***************************************************************************************************!*\ - !*** ./src/app/components/controls/tap/tap-rtp-streams/tap-rtp-streams.component.scss?ngResource ***! - \***************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Imports -var ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = __webpack_require__(/*! ../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ 2487); -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../../node_modules/css-loader/dist/runtime/api.js */ 1386); -var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.mat-ripple { - overflow: hidden; - position: relative; -} -.mat-ripple:not(:empty) { - transform: translateZ(0); -} - -.mat-ripple.mat-ripple-unbounded { - overflow: visible; -} - -.mat-ripple-element { - position: absolute; - border-radius: 50%; - pointer-events: none; - transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); - transform: scale3d(0, 0, 0); -} -.cdk-high-contrast-active .mat-ripple-element { - display: none; -} - -.cdk-visually-hidden { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - white-space: nowrap; - outline: 0; - -webkit-appearance: none; - -moz-appearance: none; - left: 0; -} -[dir=rtl] .cdk-visually-hidden { - left: auto; - right: 0; -} - -.cdk-overlay-container, .cdk-global-overlay-wrapper { - pointer-events: none; - top: 0; - left: 0; - height: 100%; - width: 100%; -} - -.cdk-overlay-container { - position: fixed; - z-index: 1000; -} -.cdk-overlay-container:empty { - display: none; -} - -.cdk-global-overlay-wrapper { - display: flex; - position: absolute; - z-index: 1000; -} - -.cdk-overlay-pane { - position: absolute; - pointer-events: auto; - box-sizing: border-box; - z-index: 1000; - display: flex; - max-width: 100%; - max-height: 100%; -} - -.cdk-overlay-backdrop { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1000; - pointer-events: auto; - -webkit-tap-highlight-color: transparent; - transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); - opacity: 0; -} -.cdk-overlay-backdrop.cdk-overlay-backdrop-showing { - opacity: 1; -} -.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { - opacity: 0.6; -} - -.cdk-overlay-dark-backdrop { - background: rgba(0, 0, 0, 0.32); -} - -.cdk-overlay-transparent-backdrop { - transition: visibility 1ms linear, opacity 1ms linear; - visibility: hidden; - opacity: 1; -} -.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { - opacity: 0; - visibility: visible; -} - -.cdk-overlay-backdrop-noop-animation { - transition: none; -} - -.cdk-overlay-connected-position-bounding-box { - position: absolute; - z-index: 1000; - display: flex; - flex-direction: column; - min-width: 1px; - min-height: 1px; -} - -.cdk-global-scrollblock { - position: fixed; - width: 100%; - overflow-y: scroll; -} - -textarea.cdk-textarea-autosize { - resize: none; -} - -textarea.cdk-textarea-autosize-measuring { - padding: 2px 0 !important; - box-sizing: content-box !important; - height: auto !important; - overflow: hidden !important; -} - -textarea.cdk-textarea-autosize-measuring-firefox { - padding: 2px 0 !important; - box-sizing: content-box !important; - height: 0 !important; -} - -@keyframes cdk-text-field-autofill-start { /*!*/ } -@keyframes cdk-text-field-autofill-end { /*!*/ } -.cdk-text-field-autofill-monitored:-webkit-autofill { - animation: cdk-text-field-autofill-start 0s 1ms; -} - -.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { - animation: cdk-text-field-autofill-end 0s 1ms; -} - -.mat-focus-indicator { - position: relative; -} -.mat-focus-indicator::before { - top: 0; - left: 0; - right: 0; - bottom: 0; - position: absolute; - box-sizing: border-box; - pointer-events: none; - display: var(--mat-focus-indicator-display, none); - border: var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent); - border-radius: var(--mat-focus-indicator-border-radius, 4px); -} -.mat-focus-indicator:focus::before { - content: ""; -} - -.cdk-high-contrast-active { - --mat-focus-indicator-display: block; -} - -.mat-mdc-focus-indicator { - position: relative; -} -.mat-mdc-focus-indicator::before { - top: 0; - left: 0; - right: 0; - bottom: 0; - position: absolute; - box-sizing: border-box; - pointer-events: none; - display: var(--mat-mdc-focus-indicator-display, none); - border: var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent); - border-radius: var(--mat-mdc-focus-indicator-border-radius, 4px); -} -.mat-mdc-focus-indicator:focus::before { - content: ""; -} - -.cdk-high-contrast-active { - --mat-mdc-focus-indicator-display: block; -} - -.mat-ripple-element { - background-color: rgba(0, 0, 0, 0.1); -} - -html { - --mat-option-selected-state-label-text-color: #3f51b5; - --mat-option-label-text-color: rgba(0, 0, 0, 0.87); - --mat-option-hover-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-option-focus-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-option-selected-state-layer-color: rgba(0, 0, 0, 0.04); -} - -.mat-accent { - --mat-option-selected-state-label-text-color: #ff4081; -} - -.mat-warn { - --mat-option-selected-state-label-text-color: #f44336; -} - -html { - --mat-optgroup-label-text-color: rgba(0, 0, 0, 0.87); -} - -.mat-pseudo-checkbox-full { - color: rgba(0, 0, 0, 0.54); -} -.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled { - color: #b0b0b0; -} - -.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after, -.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after { - color: #3f51b5; -} -.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full, -.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full { - background: #3f51b5; -} -.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after, -.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after { - color: #fafafa; -} - -.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after, -.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after { - color: #ff4081; -} -.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full, -.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full { - background: #ff4081; -} -.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after, -.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after { - color: #fafafa; -} - -.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after, -.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after { - color: #ff4081; -} -.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full, -.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full { - background: #ff4081; -} -.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after, -.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after { - color: #fafafa; -} - -.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after, -.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after { - color: #f44336; -} -.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full, -.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full { - background: #f44336; -} -.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after, -.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after { - color: #fafafa; -} - -.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after, -.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after { - color: #b0b0b0; -} -.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full, -.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full { - background: #b0b0b0; -} - -.mat-app-background { - background-color: #fafafa; - color: rgba(0, 0, 0, 0.87); -} - -.mat-elevation-z0, .mat-mdc-elevation-specific.mat-elevation-z0 { - box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z1, .mat-mdc-elevation-specific.mat-elevation-z1 { - box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z2, .mat-mdc-elevation-specific.mat-elevation-z2 { - box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z3, .mat-mdc-elevation-specific.mat-elevation-z3 { - box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z4, .mat-mdc-elevation-specific.mat-elevation-z4 { - box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z5, .mat-mdc-elevation-specific.mat-elevation-z5 { - box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z6, .mat-mdc-elevation-specific.mat-elevation-z6 { - box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z7, .mat-mdc-elevation-specific.mat-elevation-z7 { - box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z8, .mat-mdc-elevation-specific.mat-elevation-z8 { - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z9, .mat-mdc-elevation-specific.mat-elevation-z9 { - box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z10, .mat-mdc-elevation-specific.mat-elevation-z10 { - box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z11, .mat-mdc-elevation-specific.mat-elevation-z11 { - box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z12, .mat-mdc-elevation-specific.mat-elevation-z12 { - box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z13, .mat-mdc-elevation-specific.mat-elevation-z13 { - box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z14, .mat-mdc-elevation-specific.mat-elevation-z14 { - box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z15, .mat-mdc-elevation-specific.mat-elevation-z15 { - box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z16, .mat-mdc-elevation-specific.mat-elevation-z16 { - box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z17, .mat-mdc-elevation-specific.mat-elevation-z17 { - box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z18, .mat-mdc-elevation-specific.mat-elevation-z18 { - box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z19, .mat-mdc-elevation-specific.mat-elevation-z19 { - box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z20, .mat-mdc-elevation-specific.mat-elevation-z20 { - box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z21, .mat-mdc-elevation-specific.mat-elevation-z21 { - box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z22, .mat-mdc-elevation-specific.mat-elevation-z22 { - box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z23, .mat-mdc-elevation-specific.mat-elevation-z23 { - box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); -} - -.mat-elevation-z24, .mat-mdc-elevation-specific.mat-elevation-z24 { - box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); -} - -.mat-theme-loaded-marker { - display: none; -} - -html { - --mat-option-label-text-font: Roboto, sans-serif; - --mat-option-label-text-line-height: 24px; - --mat-option-label-text-size: 16px; - --mat-option-label-text-tracking: 0.03125em; - --mat-option-label-text-weight: 400; -} - -html { - --mat-optgroup-label-text-font: Roboto, sans-serif; - --mat-optgroup-label-text-line-height: 24px; - --mat-optgroup-label-text-size: 16px; - --mat-optgroup-label-text-tracking: 0.03125em; - --mat-optgroup-label-text-weight: 400; -} - -.mat-mdc-card { - --mdc-elevated-card-container-color: white; - --mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); - --mdc-outlined-card-container-color: white; - --mdc-outlined-card-outline-color: rgba(0, 0, 0, 0.12); - --mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); - --mat-card-subtitle-text-color: rgba(0, 0, 0, 0.54); -} - -.mat-mdc-card { - --mat-card-title-text-font: Roboto, sans-serif; - --mat-card-title-text-line-height: 32px; - --mat-card-title-text-size: 20px; - --mat-card-title-text-tracking: 0.0125em; - --mat-card-title-text-weight: 500; - --mat-card-subtitle-text-font: Roboto, sans-serif; - --mat-card-subtitle-text-line-height: 22px; - --mat-card-subtitle-text-size: 14px; - --mat-card-subtitle-text-tracking: 0.0071428571em; - --mat-card-subtitle-text-weight: 500; -} - -.mat-mdc-progress-bar { - --mdc-linear-progress-active-indicator-color: #3f51b5; - --mdc-linear-progress-track-color: rgba(63, 81, 181, 0.25); -} -@keyframes mdc-linear-progress-buffering { - from { - /* @noflip */ /*rtl:ignore*/ - } -} -.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots { - background-color: rgba(63, 81, 181, 0.25); - /* @alternate */ - background-color: var(--mdc-linear-progress-track-color, rgba(63, 81, 181, 0.25)); -} -@media (forced-colors: active) { - .mat-mdc-progress-bar .mdc-linear-progress__buffer-dots { - background-color: ButtonBorder; - } -} -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - .mat-mdc-progress-bar .mdc-linear-progress__buffer-dots { - background-color: transparent; - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E"); - } -} -.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar { - background-color: rgba(63, 81, 181, 0.25); - /* @alternate */ - background-color: var(--mdc-linear-progress-track-color, rgba(63, 81, 181, 0.25)); -} -.mat-mdc-progress-bar.mat-accent { - --mdc-linear-progress-active-indicator-color: #ff4081; - --mdc-linear-progress-track-color: rgba(255, 64, 129, 0.25); -} -@keyframes mdc-linear-progress-buffering { - from { - /* @noflip */ /*rtl:ignore*/ - } -} -.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots { - background-color: rgba(255, 64, 129, 0.25); - /* @alternate */ - background-color: var(--mdc-linear-progress-track-color, rgba(255, 64, 129, 0.25)); -} -@media (forced-colors: active) { - .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots { - background-color: ButtonBorder; - } -} -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots { - background-color: transparent; - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E"); - } -} -.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar { - background-color: rgba(255, 64, 129, 0.25); - /* @alternate */ - background-color: var(--mdc-linear-progress-track-color, rgba(255, 64, 129, 0.25)); -} -.mat-mdc-progress-bar.mat-warn { - --mdc-linear-progress-active-indicator-color: #f44336; - --mdc-linear-progress-track-color: rgba(244, 67, 54, 0.25); -} -@keyframes mdc-linear-progress-buffering { - from { - /* @noflip */ /*rtl:ignore*/ - } -} -.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots { - background-color: rgba(244, 67, 54, 0.25); - /* @alternate */ - background-color: var(--mdc-linear-progress-track-color, rgba(244, 67, 54, 0.25)); -} -@media (forced-colors: active) { - .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots { - background-color: ButtonBorder; - } -} -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots { - background-color: transparent; - background-image: url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E"); - } -} -.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar { - background-color: rgba(244, 67, 54, 0.25); - /* @alternate */ - background-color: var(--mdc-linear-progress-track-color, rgba(244, 67, 54, 0.25)); -} -.mat-mdc-tooltip { - --mdc-plain-tooltip-container-color: #616161; - --mdc-plain-tooltip-supporting-text-color: #fff; -} - -.mat-mdc-tooltip { - --mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif; - --mdc-plain-tooltip-supporting-text-size: 12px; - --mdc-plain-tooltip-supporting-text-weight: 400; - --mdc-plain-tooltip-supporting-text-tracking: 0.0333333333em; -} - -html { - --mdc-filled-text-field-caret-color: #3f51b5; - --mdc-filled-text-field-focus-active-indicator-color: #3f51b5; - --mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, 0.87); - --mdc-filled-text-field-container-color: whitesmoke; - --mdc-filled-text-field-disabled-container-color: #fafafa; - --mdc-filled-text-field-label-text-color: rgba(0, 0, 0, 0.6); - --mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-filled-text-field-input-text-color: rgba(0, 0, 0, 0.87); - --mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, 0.38); - --mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, 0.6); - --mdc-filled-text-field-error-focus-label-text-color: #f44336; - --mdc-filled-text-field-error-label-text-color: #f44336; - --mdc-filled-text-field-error-caret-color: #f44336; - --mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, 0.42); - --mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, 0.06); - --mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, 0.87); - --mdc-filled-text-field-error-active-indicator-color: #f44336; - --mdc-filled-text-field-error-focus-active-indicator-color: #f44336; - --mdc-filled-text-field-error-hover-active-indicator-color: #f44336; - --mdc-outlined-text-field-caret-color: #3f51b5; - --mdc-outlined-text-field-focus-outline-color: #3f51b5; - --mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, 0.87); - --mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, 0.6); - --mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, 0.87); - --mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, 0.38); - --mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, 0.6); - --mdc-outlined-text-field-error-caret-color: #f44336; - --mdc-outlined-text-field-error-focus-label-text-color: #f44336; - --mdc-outlined-text-field-error-label-text-color: #f44336; - --mdc-outlined-text-field-outline-color: rgba(0, 0, 0, 0.38); - --mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, 0.06); - --mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, 0.87); - --mdc-outlined-text-field-error-focus-outline-color: #f44336; - --mdc-outlined-text-field-error-hover-outline-color: #f44336; - --mdc-outlined-text-field-error-outline-color: #f44336; - --mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, 0.38); -} - -.mat-mdc-form-field-error { - color: var(--mdc-theme-error, #f44336); -} - -.mat-mdc-form-field-subscript-wrapper, -.mat-mdc-form-field-bottom-align::before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: var(--mat-form-field-subscript-text-font); - line-height: var(--mat-form-field-subscript-text-line-height); - font-size: var(--mat-form-field-subscript-text-size); - letter-spacing: var(--mat-form-field-subscript-text-tracking); - font-weight: var(--mat-form-field-subscript-text-weight); -} - -.mat-mdc-form-field-focus-overlay { - background-color: rgba(0, 0, 0, 0.87); -} - -.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay { - opacity: 0.04; -} - -.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay { - opacity: 0.12; -} - -.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after { - color: rgba(0, 0, 0, 0.54); -} -.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix::after { - color: rgba(63, 81, 181, 0.87); -} -.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix::after { - color: rgba(255, 64, 129, 0.87); -} -.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix::after { - color: rgba(244, 67, 54, 0.87); -} -.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after { - color: rgba(0, 0, 0, 0.38); -} - -.mat-mdc-form-field.mat-accent { - --mdc-filled-text-field-caret-color: #ff4081; - --mdc-filled-text-field-focus-active-indicator-color: #ff4081; - --mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, 0.87); - --mdc-outlined-text-field-caret-color: #ff4081; - --mdc-outlined-text-field-focus-outline-color: #ff4081; - --mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, 0.87); -} - -.mat-mdc-form-field.mat-warn { - --mdc-filled-text-field-caret-color: #f44336; - --mdc-filled-text-field-focus-active-indicator-color: #f44336; - --mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, 0.87); - --mdc-outlined-text-field-caret-color: #f44336; - --mdc-outlined-text-field-focus-outline-color: #f44336; - --mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, 0.87); -} - -.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch { - border-left: 1px solid transparent; -} - -[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch { - border-left: none; - border-right: 1px solid transparent; -} - -.mat-mdc-form-field-infix { - min-height: 56px; -} - -.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label { - top: 28px; -} - -.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above { - --mat-mdc-form-field-label-transform: translateY( - -34.75px) - scale(var(--mat-mdc-form-field-floating-label-scale, 0.75)); - transform: var(--mat-mdc-form-field-label-transform); -} - -.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix { - padding-top: 16px; - padding-bottom: 16px; -} - -.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix { - padding-top: 24px; - padding-bottom: 8px; -} - -.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix { - padding-top: 16px; - padding-bottom: 16px; -} - -html { - --mdc-filled-text-field-label-text-font: Roboto, sans-serif; - --mdc-filled-text-field-label-text-size: 16px; - --mdc-filled-text-field-label-text-tracking: 0.03125em; - --mdc-filled-text-field-label-text-weight: 400; - --mdc-outlined-text-field-label-text-font: Roboto, sans-serif; - --mdc-outlined-text-field-label-text-size: 16px; - --mdc-outlined-text-field-label-text-tracking: 0.03125em; - --mdc-outlined-text-field-label-text-weight: 400; - --mat-form-field-container-text-font: Roboto, sans-serif; - --mat-form-field-container-text-line-height: 24px; - --mat-form-field-container-text-size: 16px; - --mat-form-field-container-text-tracking: 0.03125em; - --mat-form-field-container-text-weight: 400; - --mat-form-field-outlined-label-text-populated-size: 16px; - --mat-form-field-subscript-text-font: Roboto, sans-serif; - --mat-form-field-subscript-text-line-height: 20px; - --mat-form-field-subscript-text-size: 12px; - --mat-form-field-subscript-text-tracking: 0.0333333333em; - --mat-form-field-subscript-text-weight: 400; -} - -html { - --mat-select-panel-background-color: white; - --mat-select-enabled-trigger-text-color: rgba(0, 0, 0, 0.87); - --mat-select-disabled-trigger-text-color: rgba(0, 0, 0, 0.38); - --mat-select-placeholder-text-color: rgba(0, 0, 0, 0.6); - --mat-select-enabled-arrow-color: rgba(0, 0, 0, 0.54); - --mat-select-disabled-arrow-color: rgba(0, 0, 0, 0.38); - --mat-select-focused-arrow-color: rgba(63, 81, 181, 0.87); - --mat-select-invalid-arrow-color: rgba(244, 67, 54, 0.87); -} -html .mat-mdc-form-field.mat-accent { - --mat-select-panel-background-color: white; - --mat-select-enabled-trigger-text-color: rgba(0, 0, 0, 0.87); - --mat-select-disabled-trigger-text-color: rgba(0, 0, 0, 0.38); - --mat-select-placeholder-text-color: rgba(0, 0, 0, 0.6); - --mat-select-enabled-arrow-color: rgba(0, 0, 0, 0.54); - --mat-select-disabled-arrow-color: rgba(0, 0, 0, 0.38); - --mat-select-focused-arrow-color: rgba(255, 64, 129, 0.87); - --mat-select-invalid-arrow-color: rgba(244, 67, 54, 0.87); -} -html .mat-mdc-form-field.mat-warn { - --mat-select-panel-background-color: white; - --mat-select-enabled-trigger-text-color: rgba(0, 0, 0, 0.87); - --mat-select-disabled-trigger-text-color: rgba(0, 0, 0, 0.38); - --mat-select-placeholder-text-color: rgba(0, 0, 0, 0.6); - --mat-select-enabled-arrow-color: rgba(0, 0, 0, 0.54); - --mat-select-disabled-arrow-color: rgba(0, 0, 0, 0.38); - --mat-select-focused-arrow-color: rgba(244, 67, 54, 0.87); - --mat-select-invalid-arrow-color: rgba(244, 67, 54, 0.87); -} - -html { - --mat-select-trigger-text-font: Roboto, sans-serif; - --mat-select-trigger-text-line-height: 24px; - --mat-select-trigger-text-size: 16px; - --mat-select-trigger-text-tracking: 0.03125em; - --mat-select-trigger-text-weight: 400; -} - -html { - --mat-autocomplete-background-color: white; -} - -.mat-mdc-dialog-container { - --mdc-dialog-container-color: white; - --mdc-dialog-subhead-color: rgba(0, 0, 0, 0.87); - --mdc-dialog-supporting-text-color: rgba(0, 0, 0, 0.6); -} - -.mat-mdc-dialog-container { - --mdc-dialog-subhead-font: Roboto, sans-serif; - --mdc-dialog-subhead-line-height: 32px; - --mdc-dialog-subhead-size: 20px; - --mdc-dialog-subhead-weight: 500; - --mdc-dialog-subhead-tracking: 0.0125em; - --mdc-dialog-supporting-text-font: Roboto, sans-serif; - --mdc-dialog-supporting-text-line-height: 24px; - --mdc-dialog-supporting-text-size: 16px; - --mdc-dialog-supporting-text-weight: 400; - --mdc-dialog-supporting-text-tracking: 0.03125em; -} - -.mat-mdc-standard-chip { - --mdc-chip-disabled-label-text-color: #212121; - --mdc-chip-elevated-container-color: #e0e0e0; - --mdc-chip-elevated-disabled-container-color: #e0e0e0; - --mdc-chip-focus-state-layer-color: black; - --mdc-chip-focus-state-layer-opacity: 0.12; - --mdc-chip-label-text-color: #212121; - --mdc-chip-with-icon-icon-color: #212121; - --mdc-chip-with-icon-disabled-icon-color: #212121; - --mdc-chip-with-icon-selected-icon-color: #212121; - --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121; - --mdc-chip-with-trailing-icon-trailing-icon-color: #212121; -} -.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary, .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary { - --mdc-chip-disabled-label-text-color: white; - --mdc-chip-elevated-container-color: #3f51b5; - --mdc-chip-elevated-disabled-container-color: #3f51b5; - --mdc-chip-focus-state-layer-color: black; - --mdc-chip-focus-state-layer-opacity: 0.12; - --mdc-chip-label-text-color: white; - --mdc-chip-with-icon-icon-color: white; - --mdc-chip-with-icon-disabled-icon-color: white; - --mdc-chip-with-icon-selected-icon-color: white; - --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white; - --mdc-chip-with-trailing-icon-trailing-icon-color: white; -} -.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent, .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent { - --mdc-chip-disabled-label-text-color: white; - --mdc-chip-elevated-container-color: #ff4081; - --mdc-chip-elevated-disabled-container-color: #ff4081; - --mdc-chip-focus-state-layer-color: black; - --mdc-chip-focus-state-layer-opacity: 0.12; - --mdc-chip-label-text-color: white; - --mdc-chip-with-icon-icon-color: white; - --mdc-chip-with-icon-disabled-icon-color: white; - --mdc-chip-with-icon-selected-icon-color: white; - --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white; - --mdc-chip-with-trailing-icon-trailing-icon-color: white; -} -.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn, .mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn { - --mdc-chip-disabled-label-text-color: white; - --mdc-chip-elevated-container-color: #f44336; - --mdc-chip-elevated-disabled-container-color: #f44336; - --mdc-chip-focus-state-layer-color: black; - --mdc-chip-focus-state-layer-opacity: 0.12; - --mdc-chip-label-text-color: white; - --mdc-chip-with-icon-icon-color: white; - --mdc-chip-with-icon-disabled-icon-color: white; - --mdc-chip-with-icon-selected-icon-color: white; - --mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white; - --mdc-chip-with-trailing-icon-trailing-icon-color: white; -} - -.mat-mdc-chip.mat-mdc-standard-chip { - --mdc-chip-container-height: 32px; -} - -.mat-mdc-standard-chip { - --mdc-chip-label-text-font: Roboto, sans-serif; - --mdc-chip-label-text-line-height: 20px; - --mdc-chip-label-text-size: 14px; - --mdc-chip-label-text-tracking: 0.0178571429em; - --mdc-chip-label-text-weight: 400; -} - -.mat-mdc-slide-toggle { - --mdc-switch-selected-focus-state-layer-color: #3949ab; - --mdc-switch-selected-handle-color: #3949ab; - --mdc-switch-selected-hover-state-layer-color: #3949ab; - --mdc-switch-selected-pressed-state-layer-color: #3949ab; - --mdc-switch-selected-focus-handle-color: #1a237e; - --mdc-switch-selected-hover-handle-color: #1a237e; - --mdc-switch-selected-pressed-handle-color: #1a237e; - --mdc-switch-selected-focus-track-color: #7986cb; - --mdc-switch-selected-hover-track-color: #7986cb; - --mdc-switch-selected-pressed-track-color: #7986cb; - --mdc-switch-selected-track-color: #7986cb; - --mdc-switch-disabled-selected-handle-color: #424242; - --mdc-switch-disabled-selected-icon-color: #fff; - --mdc-switch-disabled-selected-track-color: #424242; - --mdc-switch-disabled-unselected-handle-color: #424242; - --mdc-switch-disabled-unselected-icon-color: #fff; - --mdc-switch-disabled-unselected-track-color: #424242; - --mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff); - --mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); - --mdc-switch-handle-shadow-color: black; - --mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); - --mdc-switch-selected-icon-color: #fff; - --mdc-switch-unselected-focus-handle-color: #212121; - --mdc-switch-unselected-focus-state-layer-color: #424242; - --mdc-switch-unselected-focus-track-color: #e0e0e0; - --mdc-switch-unselected-handle-color: #616161; - --mdc-switch-unselected-hover-handle-color: #212121; - --mdc-switch-unselected-hover-state-layer-color: #424242; - --mdc-switch-unselected-hover-track-color: #e0e0e0; - --mdc-switch-unselected-icon-color: #fff; - --mdc-switch-unselected-pressed-handle-color: #212121; - --mdc-switch-unselected-pressed-state-layer-color: #424242; - --mdc-switch-unselected-pressed-track-color: #e0e0e0; - --mdc-switch-unselected-track-color: #e0e0e0; -} -.mat-mdc-slide-toggle .mdc-form-field { - color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87)); -} -.mat-mdc-slide-toggle .mdc-switch--disabled + label { - color: rgba(0, 0, 0, 0.38); -} -.mat-mdc-slide-toggle.mat-accent { - --mdc-switch-selected-focus-state-layer-color: #d81b60; - --mdc-switch-selected-handle-color: #d81b60; - --mdc-switch-selected-hover-state-layer-color: #d81b60; - --mdc-switch-selected-pressed-state-layer-color: #d81b60; - --mdc-switch-selected-focus-handle-color: #880e4f; - --mdc-switch-selected-hover-handle-color: #880e4f; - --mdc-switch-selected-pressed-handle-color: #880e4f; - --mdc-switch-selected-focus-track-color: #f06292; - --mdc-switch-selected-hover-track-color: #f06292; - --mdc-switch-selected-pressed-track-color: #f06292; - --mdc-switch-selected-track-color: #f06292; -} -.mat-mdc-slide-toggle.mat-warn { - --mdc-switch-selected-focus-state-layer-color: #e53935; - --mdc-switch-selected-handle-color: #e53935; - --mdc-switch-selected-hover-state-layer-color: #e53935; - --mdc-switch-selected-pressed-state-layer-color: #e53935; - --mdc-switch-selected-focus-handle-color: #b71c1c; - --mdc-switch-selected-hover-handle-color: #b71c1c; - --mdc-switch-selected-pressed-handle-color: #b71c1c; - --mdc-switch-selected-focus-track-color: #e57373; - --mdc-switch-selected-hover-track-color: #e57373; - --mdc-switch-selected-pressed-track-color: #e57373; - --mdc-switch-selected-track-color: #e57373; -} - -.mat-mdc-slide-toggle { - --mdc-switch-state-layer-size: 48px; -} - -.mat-mdc-slide-toggle { - --mat-slide-toggle-label-text-font: Roboto, sans-serif; - --mat-slide-toggle-label-text-size: 14px; - --mat-slide-toggle-label-text-tracking: 0.0178571429em; - --mat-slide-toggle-label-text-line-height: 20px; - --mat-slide-toggle-label-text-weight: 400; -} -.mat-mdc-slide-toggle .mdc-form-field { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: Roboto, sans-serif; - /* @alternate */ - font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)); - font-size: 0.875rem; - /* @alternate */ - font-size: var(--mdc-typography-body2-font-size, 0.875rem); - line-height: 1.25rem; - /* @alternate */ - line-height: var(--mdc-typography-body2-line-height, 1.25rem); - font-weight: 400; - /* @alternate */ - font-weight: var(--mdc-typography-body2-font-weight, 400); - letter-spacing: 0.0178571429em; - /* @alternate */ - letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em); - text-decoration: inherit; - /* @alternate */ - -webkit-text-decoration: var(--mdc-typography-body2-text-decoration, inherit); - text-decoration: var(--mdc-typography-body2-text-decoration, inherit); - text-transform: inherit; - /* @alternate */ - text-transform: var(--mdc-typography-body2-text-transform, inherit); -} - -.mat-mdc-radio-button .mdc-form-field { - color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87)); -} - -.mat-mdc-radio-button.mat-primary { - --mdc-radio-disabled-selected-icon-color: #000; - --mdc-radio-disabled-unselected-icon-color: #000; - --mdc-radio-unselected-hover-icon-color: #212121; - --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-selected-focus-icon-color: #3f51b5; - --mdc-radio-selected-hover-icon-color: #3f51b5; - --mdc-radio-selected-icon-color: #3f51b5; - --mdc-radio-selected-pressed-icon-color: #3f51b5; - --mat-radio-ripple-color: #000; - --mat-radio-checked-ripple-color: #3f51b5; - --mat-radio-disabled-label-color: rgba(0, 0, 0, 0.38); -} -.mat-mdc-radio-button.mat-accent { - --mdc-radio-disabled-selected-icon-color: #000; - --mdc-radio-disabled-unselected-icon-color: #000; - --mdc-radio-unselected-hover-icon-color: #212121; - --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-selected-focus-icon-color: #ff4081; - --mdc-radio-selected-hover-icon-color: #ff4081; - --mdc-radio-selected-icon-color: #ff4081; - --mdc-radio-selected-pressed-icon-color: #ff4081; - --mat-radio-ripple-color: #000; - --mat-radio-checked-ripple-color: #ff4081; - --mat-radio-disabled-label-color: rgba(0, 0, 0, 0.38); -} -.mat-mdc-radio-button.mat-warn { - --mdc-radio-disabled-selected-icon-color: #000; - --mdc-radio-disabled-unselected-icon-color: #000; - --mdc-radio-unselected-hover-icon-color: #212121; - --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-selected-focus-icon-color: #f44336; - --mdc-radio-selected-hover-icon-color: #f44336; - --mdc-radio-selected-icon-color: #f44336; - --mdc-radio-selected-pressed-icon-color: #f44336; - --mat-radio-ripple-color: #000; - --mat-radio-checked-ripple-color: #f44336; - --mat-radio-disabled-label-color: rgba(0, 0, 0, 0.38); -} - -.mat-mdc-radio-button .mdc-radio { - --mdc-radio-state-layer-size: 40px; -} - -.mat-mdc-radio-button .mdc-form-field { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)); - font-size: var(--mdc-typography-body2-font-size, 14px); - line-height: var(--mdc-typography-body2-line-height, 20px); - font-weight: var(--mdc-typography-body2-font-weight, 400); - letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em); - -webkit-text-decoration: var(--mdc-typography-body2-text-decoration, inherit); - text-decoration: var(--mdc-typography-body2-text-decoration, inherit); - text-transform: var(--mdc-typography-body2-text-transform, none); -} - -.mat-mdc-slider { - --mdc-slider-label-container-color: black; - --mdc-slider-label-label-text-color: white; - --mdc-slider-disabled-handle-color: #000; - --mdc-slider-disabled-active-track-color: #000; - --mdc-slider-disabled-inactive-track-color: #000; - --mdc-slider-with-tick-marks-disabled-container-color: #000; - --mat-mdc-slider-value-indicator-opacity: 0.6; -} -.mat-mdc-slider.mat-primary { - --mdc-slider-handle-color: #3f51b5; - --mdc-slider-focus-handle-color: #3f51b5; - --mdc-slider-hover-handle-color: #3f51b5; - --mdc-slider-active-track-color: #3f51b5; - --mdc-slider-inactive-track-color: #3f51b5; - --mdc-slider-with-tick-marks-active-container-color: #fff; - --mdc-slider-with-tick-marks-inactive-container-color: #3f51b5; - --mat-mdc-slider-ripple-color: #3f51b5; - --mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, 0.05); - --mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, 0.2); -} -.mat-mdc-slider.mat-accent { - --mdc-slider-handle-color: #ff4081; - --mdc-slider-focus-handle-color: #ff4081; - --mdc-slider-hover-handle-color: #ff4081; - --mdc-slider-active-track-color: #ff4081; - --mdc-slider-inactive-track-color: #ff4081; - --mdc-slider-with-tick-marks-active-container-color: #fff; - --mdc-slider-with-tick-marks-inactive-container-color: #ff4081; - --mat-mdc-slider-ripple-color: #ff4081; - --mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, 0.05); - --mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, 0.2); -} -.mat-mdc-slider.mat-warn { - --mdc-slider-handle-color: #f44336; - --mdc-slider-focus-handle-color: #f44336; - --mdc-slider-hover-handle-color: #f44336; - --mdc-slider-active-track-color: #f44336; - --mdc-slider-inactive-track-color: #f44336; - --mdc-slider-with-tick-marks-active-container-color: #fff; - --mdc-slider-with-tick-marks-inactive-container-color: #f44336; - --mat-mdc-slider-ripple-color: #f44336; - --mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, 0.05); - --mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, 0.2); -} - -.mat-mdc-slider { - --mdc-slider-label-label-text-font: Roboto, sans-serif; - --mdc-slider-label-label-text-size: 14px; - --mdc-slider-label-label-text-line-height: 22px; - --mdc-slider-label-label-text-tracking: 0.0071428571em; - --mdc-slider-label-label-text-weight: 500; -} - -html { - --mat-menu-item-label-text-color: rgba(0, 0, 0, 0.87); - --mat-menu-item-icon-color: rgba(0, 0, 0, 0.87); - --mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-menu-container-color: white; -} - -html { - --mat-menu-item-label-text-font: Roboto, sans-serif; - --mat-menu-item-label-text-size: 16px; - --mat-menu-item-label-text-tracking: 0.03125em; - --mat-menu-item-label-text-line-height: 24px; - --mat-menu-item-label-text-weight: 400; -} - -.mat-mdc-list-base { - --mdc-list-list-item-label-text-color: rgba(0, 0, 0, 0.87); - --mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, 0.54); - --mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, 0.38); - --mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, 0.38); - --mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, 0.38); - --mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, 0.38); - --mdc-list-list-item-disabled-label-text-color: black; - --mdc-list-list-item-disabled-leading-icon-color: black; - --mdc-list-list-item-disabled-trailing-icon-color: black; - --mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, 0.87); - --mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, 0.38); - --mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, 0.38); - --mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, 0.87); - --mdc-list-list-item-hover-state-layer-color: black; - --mdc-list-list-item-hover-state-layer-opacity: 0.04; - --mdc-list-list-item-focus-state-layer-color: black; - --mdc-list-list-item-focus-state-layer-opacity: 0.12; -} - -.mdc-list-item__start, -.mdc-list-item__end { - --mdc-radio-disabled-selected-icon-color: #000; - --mdc-radio-disabled-unselected-icon-color: #000; - --mdc-radio-unselected-hover-icon-color: #212121; - --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-selected-focus-icon-color: #3f51b5; - --mdc-radio-selected-hover-icon-color: #3f51b5; - --mdc-radio-selected-icon-color: #3f51b5; - --mdc-radio-selected-pressed-icon-color: #3f51b5; -} - -.mat-accent .mdc-list-item__start, -.mat-accent .mdc-list-item__end { - --mdc-radio-disabled-selected-icon-color: #000; - --mdc-radio-disabled-unselected-icon-color: #000; - --mdc-radio-unselected-hover-icon-color: #212121; - --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-selected-focus-icon-color: #ff4081; - --mdc-radio-selected-hover-icon-color: #ff4081; - --mdc-radio-selected-icon-color: #ff4081; - --mdc-radio-selected-pressed-icon-color: #ff4081; -} - -.mat-warn .mdc-list-item__start, -.mat-warn .mdc-list-item__end { - --mdc-radio-disabled-selected-icon-color: #000; - --mdc-radio-disabled-unselected-icon-color: #000; - --mdc-radio-unselected-hover-icon-color: #212121; - --mdc-radio-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-radio-selected-focus-icon-color: #f44336; - --mdc-radio-selected-hover-icon-color: #f44336; - --mdc-radio-selected-icon-color: #f44336; - --mdc-radio-selected-pressed-icon-color: #f44336; -} - -.mat-mdc-list-option { - --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-selected-checkmark-color: #fff; - --mdc-checkbox-selected-focus-icon-color: #3f51b5; - --mdc-checkbox-selected-hover-icon-color: #3f51b5; - --mdc-checkbox-selected-icon-color: #3f51b5; - --mdc-checkbox-selected-pressed-icon-color: #3f51b5; - --mdc-checkbox-unselected-focus-icon-color: #212121; - --mdc-checkbox-unselected-hover-icon-color: #212121; - --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-selected-focus-state-layer-color: #3f51b5; - --mdc-checkbox-selected-hover-state-layer-color: #3f51b5; - --mdc-checkbox-selected-pressed-state-layer-color: #3f51b5; - --mdc-checkbox-unselected-focus-state-layer-color: black; - --mdc-checkbox-unselected-hover-state-layer-color: black; - --mdc-checkbox-unselected-pressed-state-layer-color: black; -} - -.mat-mdc-list-option.mat-accent { - --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-selected-checkmark-color: #fff; - --mdc-checkbox-selected-focus-icon-color: #ff4081; - --mdc-checkbox-selected-hover-icon-color: #ff4081; - --mdc-checkbox-selected-icon-color: #ff4081; - --mdc-checkbox-selected-pressed-icon-color: #ff4081; - --mdc-checkbox-unselected-focus-icon-color: #212121; - --mdc-checkbox-unselected-hover-icon-color: #212121; - --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-selected-focus-state-layer-color: #ff4081; - --mdc-checkbox-selected-hover-state-layer-color: #ff4081; - --mdc-checkbox-selected-pressed-state-layer-color: #ff4081; - --mdc-checkbox-unselected-focus-state-layer-color: black; - --mdc-checkbox-unselected-hover-state-layer-color: black; - --mdc-checkbox-unselected-pressed-state-layer-color: black; -} - -.mat-mdc-list-option.mat-warn { - --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-selected-checkmark-color: #fff; - --mdc-checkbox-selected-focus-icon-color: #f44336; - --mdc-checkbox-selected-hover-icon-color: #f44336; - --mdc-checkbox-selected-icon-color: #f44336; - --mdc-checkbox-selected-pressed-icon-color: #f44336; - --mdc-checkbox-unselected-focus-icon-color: #212121; - --mdc-checkbox-unselected-hover-icon-color: #212121; - --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-selected-focus-state-layer-color: #f44336; - --mdc-checkbox-selected-hover-state-layer-color: #f44336; - --mdc-checkbox-selected-pressed-state-layer-color: #f44336; - --mdc-checkbox-unselected-focus-state-layer-color: black; - --mdc-checkbox-unselected-hover-state-layer-color: black; - --mdc-checkbox-unselected-pressed-state-layer-color: black; -} - -.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text, -.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text { - color: #3f51b5; -} -.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start, -.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start { - color: #3f51b5; -} - -.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start, -.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content, -.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end { - opacity: 1; -} - -.mat-mdc-list-base { - --mdc-list-list-item-one-line-container-height: 48px; - --mdc-list-list-item-two-line-container-height: 64px; - --mdc-list-list-item-three-line-container-height: 88px; -} - -.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line, .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line, .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line { - height: 56px; -} -.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines, .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines, .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines { - height: 72px; -} - -.mat-mdc-list-base { - --mdc-list-list-item-label-text-font: Roboto, sans-serif; - --mdc-list-list-item-label-text-line-height: 24px; - --mdc-list-list-item-label-text-size: 16px; - --mdc-list-list-item-label-text-tracking: 0.03125em; - --mdc-list-list-item-label-text-weight: 400; - --mdc-list-list-item-supporting-text-font: Roboto, sans-serif; - --mdc-list-list-item-supporting-text-line-height: 20px; - --mdc-list-list-item-supporting-text-size: 14px; - --mdc-list-list-item-supporting-text-tracking: 0.0178571429em; - --mdc-list-list-item-supporting-text-weight: 400; - --mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif; - --mdc-list-list-item-trailing-supporting-text-line-height: 20px; - --mdc-list-list-item-trailing-supporting-text-size: 12px; - --mdc-list-list-item-trailing-supporting-text-tracking: 0.0333333333em; - --mdc-list-list-item-trailing-supporting-text-weight: 400; -} - -.mdc-list-group__subheader { - font-size: 16px; - font-weight: 400; - line-height: 28px; - font-family: Roboto, sans-serif; - letter-spacing: 0.009375em; -} - -html { - --mat-paginator-container-text-color: rgba(0, 0, 0, 0.87); - --mat-paginator-container-background-color: white; - --mat-paginator-enabled-icon-color: rgba(0, 0, 0, 0.54); - --mat-paginator-disabled-icon-color: rgba(0, 0, 0, 0.12); -} - -html { - --mat-paginator-container-size: 56px; -} - -.mat-mdc-paginator .mat-mdc-form-field-infix { - min-height: 40px; -} -.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label { - top: 20px; -} -.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above { - --mat-mdc-form-field-label-transform: translateY( - -26.75px) - scale(var(--mat-mdc-form-field-floating-label-scale, 0.75)); - transform: var(--mat-mdc-form-field-label-transform); -} -.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix { - padding-top: 8px; - padding-bottom: 8px; -} -.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix { - padding-top: 8px; - padding-bottom: 8px; -} -.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix { - padding-top: 8px; - padding-bottom: 8px; -} -.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label { - display: none; -} - -html { - --mat-paginator-container-text-font: Roboto, sans-serif; - --mat-paginator-container-text-line-height: 20px; - --mat-paginator-container-text-size: 12px; - --mat-paginator-container-text-tracking: 0.0333333333em; - --mat-paginator-container-text-weight: 400; - --mat-paginator-select-trigger-text-size: 12px; -} - -.mat-mdc-tab-group, .mat-mdc-tab-nav-bar { - --mdc-tab-indicator-active-indicator-color: #3f51b5; - --mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, 0.38); - --mat-tab-header-pagination-icon-color: #000; - --mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-active-label-text-color: #3f51b5; - --mat-tab-header-active-ripple-color: #3f51b5; - --mat-tab-header-inactive-ripple-color: #3f51b5; - --mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-active-focus-label-text-color: #3f51b5; - --mat-tab-header-active-hover-label-text-color: #3f51b5; - --mat-tab-header-active-focus-indicator-color: #3f51b5; - --mat-tab-header-active-hover-indicator-color: #3f51b5; -} -.mat-mdc-tab-group.mat-accent, .mat-mdc-tab-nav-bar.mat-accent { - --mdc-tab-indicator-active-indicator-color: #ff4081; - --mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, 0.38); - --mat-tab-header-pagination-icon-color: #000; - --mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-active-label-text-color: #ff4081; - --mat-tab-header-active-ripple-color: #ff4081; - --mat-tab-header-inactive-ripple-color: #ff4081; - --mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-active-focus-label-text-color: #ff4081; - --mat-tab-header-active-hover-label-text-color: #ff4081; - --mat-tab-header-active-focus-indicator-color: #ff4081; - --mat-tab-header-active-hover-indicator-color: #ff4081; -} -.mat-mdc-tab-group.mat-warn, .mat-mdc-tab-nav-bar.mat-warn { - --mdc-tab-indicator-active-indicator-color: #f44336; - --mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, 0.38); - --mat-tab-header-pagination-icon-color: #000; - --mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-active-label-text-color: #f44336; - --mat-tab-header-active-ripple-color: #f44336; - --mat-tab-header-inactive-ripple-color: #f44336; - --mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, 0.6); - --mat-tab-header-active-focus-label-text-color: #f44336; - --mat-tab-header-active-hover-label-text-color: #f44336; - --mat-tab-header-active-focus-indicator-color: #f44336; - --mat-tab-header-active-hover-indicator-color: #f44336; -} -.mat-mdc-tab-group.mat-background-primary, .mat-mdc-tab-nav-bar.mat-background-primary { - --mat-tab-header-with-background-background-color: #3f51b5; - --mat-tab-header-with-background-foreground-color: white; -} -.mat-mdc-tab-group.mat-background-accent, .mat-mdc-tab-nav-bar.mat-background-accent { - --mat-tab-header-with-background-background-color: #ff4081; - --mat-tab-header-with-background-foreground-color: white; -} -.mat-mdc-tab-group.mat-background-warn, .mat-mdc-tab-nav-bar.mat-background-warn { - --mat-tab-header-with-background-background-color: #f44336; - --mat-tab-header-with-background-foreground-color: white; -} - -.mat-mdc-tab-header { - --mdc-secondary-navigation-tab-container-height: 48px; -} - -.mat-mdc-tab-header { - --mat-tab-header-label-text-font: Roboto, sans-serif; - --mat-tab-header-label-text-size: 14px; - --mat-tab-header-label-text-tracking: 0.0892857143em; - --mat-tab-header-label-text-line-height: 36px; - --mat-tab-header-label-text-weight: 500; -} - -html { - --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-selected-checkmark-color: #fff; - --mdc-checkbox-selected-focus-icon-color: #ff4081; - --mdc-checkbox-selected-hover-icon-color: #ff4081; - --mdc-checkbox-selected-icon-color: #ff4081; - --mdc-checkbox-selected-pressed-icon-color: #ff4081; - --mdc-checkbox-unselected-focus-icon-color: #212121; - --mdc-checkbox-unselected-hover-icon-color: #212121; - --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-selected-focus-state-layer-color: #ff4081; - --mdc-checkbox-selected-hover-state-layer-color: #ff4081; - --mdc-checkbox-selected-pressed-state-layer-color: #ff4081; - --mdc-checkbox-unselected-focus-state-layer-color: black; - --mdc-checkbox-unselected-hover-state-layer-color: black; - --mdc-checkbox-unselected-pressed-state-layer-color: black; -} - -.mat-mdc-checkbox.mat-primary { - --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-selected-checkmark-color: #fff; - --mdc-checkbox-selected-focus-icon-color: #3f51b5; - --mdc-checkbox-selected-hover-icon-color: #3f51b5; - --mdc-checkbox-selected-icon-color: #3f51b5; - --mdc-checkbox-selected-pressed-icon-color: #3f51b5; - --mdc-checkbox-unselected-focus-icon-color: #212121; - --mdc-checkbox-unselected-hover-icon-color: #212121; - --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-selected-focus-state-layer-color: #3f51b5; - --mdc-checkbox-selected-hover-state-layer-color: #3f51b5; - --mdc-checkbox-selected-pressed-state-layer-color: #3f51b5; - --mdc-checkbox-unselected-focus-state-layer-color: black; - --mdc-checkbox-unselected-hover-state-layer-color: black; - --mdc-checkbox-unselected-pressed-state-layer-color: black; -} -.mat-mdc-checkbox.mat-warn { - --mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, 0.38); - --mdc-checkbox-selected-checkmark-color: #fff; - --mdc-checkbox-selected-focus-icon-color: #f44336; - --mdc-checkbox-selected-hover-icon-color: #f44336; - --mdc-checkbox-selected-icon-color: #f44336; - --mdc-checkbox-selected-pressed-icon-color: #f44336; - --mdc-checkbox-unselected-focus-icon-color: #212121; - --mdc-checkbox-unselected-hover-icon-color: #212121; - --mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, 0.54); - --mdc-checkbox-selected-focus-state-layer-color: #f44336; - --mdc-checkbox-selected-hover-state-layer-color: #f44336; - --mdc-checkbox-selected-pressed-state-layer-color: #f44336; - --mdc-checkbox-unselected-focus-state-layer-color: black; - --mdc-checkbox-unselected-hover-state-layer-color: black; - --mdc-checkbox-unselected-pressed-state-layer-color: black; -} -.mat-mdc-checkbox .mdc-form-field { - color: var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87)); -} -.mat-mdc-checkbox.mat-mdc-checkbox-disabled label { - color: rgba(0, 0, 0, 0.38); -} - -html { - --mdc-checkbox-state-layer-size: 40px; -} - -.mat-mdc-checkbox .mdc-form-field { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)); - font-size: var(--mdc-typography-body2-font-size, 14px); - line-height: var(--mdc-typography-body2-line-height, 20px); - font-weight: var(--mdc-typography-body2-font-weight, 400); - letter-spacing: var(--mdc-typography-body2-letter-spacing, 0.0178571429em); - -webkit-text-decoration: var(--mdc-typography-body2-text-decoration, inherit); - text-decoration: var(--mdc-typography-body2-text-decoration, inherit); - text-transform: var(--mdc-typography-body2-text-transform, none); -} - -.mat-mdc-button.mat-unthemed { - --mdc-text-button-label-text-color: #000; -} -.mat-mdc-button.mat-primary { - --mdc-text-button-label-text-color: #3f51b5; -} -.mat-mdc-button.mat-accent { - --mdc-text-button-label-text-color: #ff4081; -} -.mat-mdc-button.mat-warn { - --mdc-text-button-label-text-color: #f44336; -} -.mat-mdc-button[disabled][disabled] { - --mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-text-button-label-text-color: rgba(0, 0, 0, 0.38); -} - -.mat-mdc-unelevated-button.mat-unthemed { - --mdc-filled-button-container-color: #fff; - --mdc-filled-button-label-text-color: #000; -} -.mat-mdc-unelevated-button.mat-primary { - --mdc-filled-button-container-color: #3f51b5; - --mdc-filled-button-label-text-color: #fff; -} -.mat-mdc-unelevated-button.mat-accent { - --mdc-filled-button-container-color: #ff4081; - --mdc-filled-button-label-text-color: #fff; -} -.mat-mdc-unelevated-button.mat-warn { - --mdc-filled-button-container-color: #f44336; - --mdc-filled-button-label-text-color: #fff; -} -.mat-mdc-unelevated-button[disabled][disabled] { - --mdc-filled-button-disabled-container-color: rgba(0, 0, 0, 0.12); - --mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-filled-button-container-color: rgba(0, 0, 0, 0.12); - --mdc-filled-button-label-text-color: rgba(0, 0, 0, 0.38); -} - -.mat-mdc-raised-button.mat-unthemed { - --mdc-protected-button-container-color: #fff; - --mdc-protected-button-label-text-color: #000; -} -.mat-mdc-raised-button.mat-primary { - --mdc-protected-button-container-color: #3f51b5; - --mdc-protected-button-label-text-color: #fff; -} -.mat-mdc-raised-button.mat-accent { - --mdc-protected-button-container-color: #ff4081; - --mdc-protected-button-label-text-color: #fff; -} -.mat-mdc-raised-button.mat-warn { - --mdc-protected-button-container-color: #f44336; - --mdc-protected-button-label-text-color: #fff; -} -.mat-mdc-raised-button[disabled][disabled] { - --mdc-protected-button-disabled-container-color: rgba(0, 0, 0, 0.12); - --mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-protected-button-container-color: rgba(0, 0, 0, 0.12); - --mdc-protected-button-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-protected-button-container-elevation: 0; -} - -.mat-mdc-outlined-button { - --mdc-outlined-button-outline-color: rgba(0, 0, 0, 0.12); -} -.mat-mdc-outlined-button.mat-unthemed { - --mdc-outlined-button-label-text-color: #000; -} -.mat-mdc-outlined-button.mat-primary { - --mdc-outlined-button-label-text-color: #3f51b5; -} -.mat-mdc-outlined-button.mat-accent { - --mdc-outlined-button-label-text-color: #ff4081; -} -.mat-mdc-outlined-button.mat-warn { - --mdc-outlined-button-label-text-color: #f44336; -} -.mat-mdc-outlined-button[disabled][disabled] { - --mdc-outlined-button-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, 0.38); - --mdc-outlined-button-outline-color: rgba(0, 0, 0, 0.12); - --mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, 0.12); -} - -.mat-mdc-button, .mat-mdc-outlined-button { - --mat-mdc-button-persistent-ripple-color: #000; - --mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1); -} -.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before, .mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before { - opacity: 0.04; -} -.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before, .mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-button.mat-primary, .mat-mdc-outlined-button.mat-primary { - --mat-mdc-button-persistent-ripple-color: #3f51b5; - --mat-mdc-button-ripple-color: rgba(63, 81, 181, 0.1); -} -.mat-mdc-button.mat-accent, .mat-mdc-outlined-button.mat-accent { - --mat-mdc-button-persistent-ripple-color: #ff4081; - --mat-mdc-button-ripple-color: rgba(255, 64, 129, 0.1); -} -.mat-mdc-button.mat-warn, .mat-mdc-outlined-button.mat-warn { - --mat-mdc-button-persistent-ripple-color: #f44336; - --mat-mdc-button-ripple-color: rgba(244, 67, 54, 0.1); -} - -.mat-mdc-raised-button, .mat-mdc-unelevated-button { - --mat-mdc-button-persistent-ripple-color: #000; - --mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1); -} -.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before, .mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before { - opacity: 0.04; -} -.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before, .mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-raised-button.mat-primary, .mat-mdc-unelevated-button.mat-primary { - --mat-mdc-button-persistent-ripple-color: #fff; - --mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1); -} -.mat-mdc-raised-button.mat-accent, .mat-mdc-unelevated-button.mat-accent { - --mat-mdc-button-persistent-ripple-color: #fff; - --mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1); -} -.mat-mdc-raised-button.mat-warn, .mat-mdc-unelevated-button.mat-warn { - --mat-mdc-button-persistent-ripple-color: #fff; - --mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1); -} - -.mat-mdc-button.mat-mdc-button-base, -.mat-mdc-raised-button.mat-mdc-button-base, -.mat-mdc-unelevated-button.mat-mdc-button-base, -.mat-mdc-outlined-button.mat-mdc-button-base { - height: 36px; -} - -.mdc-button { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)); - font-size: var(--mdc-typography-button-font-size, 14px); - line-height: var(--mdc-typography-button-line-height, 36px); - font-weight: var(--mdc-typography-button-font-weight, 500); - letter-spacing: var(--mdc-typography-button-letter-spacing, 0.0892857143em); - -webkit-text-decoration: var(--mdc-typography-button-text-decoration, none); - text-decoration: var(--mdc-typography-button-text-decoration, none); - text-transform: var(--mdc-typography-button-text-transform, none); -} - -.mat-mdc-icon-button { - --mat-mdc-button-persistent-ripple-color: #000; - --mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1); - --mdc-icon-button-icon-color: inherit; - --mat-mdc-button-persistent-ripple-color: #000; - --mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1); -} -.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before { - opacity: 0.04; -} -.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-icon-button.mat-primary { - --mat-mdc-button-persistent-ripple-color: #6200ee; - --mat-mdc-button-ripple-color: rgba(98, 0, 238, 0.1); -} -.mat-mdc-icon-button.mat-accent { - --mat-mdc-button-persistent-ripple-color: #018786; - --mat-mdc-button-ripple-color: rgba(1, 135, 134, 0.1); -} -.mat-mdc-icon-button.mat-warn { - --mat-mdc-button-persistent-ripple-color: #b00020; - --mat-mdc-button-ripple-color: rgba(176, 0, 32, 0.1); -} -.mat-mdc-icon-button.mat-primary { - --mdc-icon-button-icon-color: #3f51b5; - --mat-mdc-button-persistent-ripple-color: #3f51b5; - --mat-mdc-button-ripple-color: rgba(63, 81, 181, 0.1); -} -.mat-mdc-icon-button.mat-accent { - --mdc-icon-button-icon-color: #ff4081; - --mat-mdc-button-persistent-ripple-color: #ff4081; - --mat-mdc-button-ripple-color: rgba(255, 64, 129, 0.1); -} -.mat-mdc-icon-button.mat-warn { - --mdc-icon-button-icon-color: #f44336; - --mat-mdc-button-persistent-ripple-color: #f44336; - --mat-mdc-button-ripple-color: rgba(244, 67, 54, 0.1); -} -.mat-mdc-icon-button[disabled][disabled] { - --mdc-icon-button-icon-color: rgba(0, 0, 0, 0.38); - --mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, 0.38); -} - -.mat-mdc-icon-button.mat-mdc-button-base { - --mdc-icon-button-state-layer-size: 48px; - width: var(--mdc-icon-button-state-layer-size); - height: var(--mdc-icon-button-state-layer-size); - padding: 12px; -} - -.mat-mdc-fab, -.mat-mdc-mini-fab { - --mat-mdc-button-persistent-ripple-color: #000; - --mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1); -} -.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before, -.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before { - opacity: 0.04; -} -.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before, .mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before, -.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before, -.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before, -.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before { - opacity: 0.12; -} -.mat-mdc-fab.mat-primary, -.mat-mdc-mini-fab.mat-primary { - --mat-mdc-button-persistent-ripple-color: #fff; - --mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1); -} -.mat-mdc-fab.mat-accent, -.mat-mdc-mini-fab.mat-accent { - --mat-mdc-button-persistent-ripple-color: #fff; - --mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1); -} -.mat-mdc-fab.mat-warn, -.mat-mdc-mini-fab.mat-warn { - --mat-mdc-button-persistent-ripple-color: #fff; - --mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1); -} -.mat-mdc-fab[disabled][disabled], -.mat-mdc-mini-fab[disabled][disabled] { - --mdc-fab-container-color: rgba(0, 0, 0, 0.12); - --mdc-fab-icon-color: rgba(0, 0, 0, 0.38); - --mat-mdc-fab-color: rgba(0, 0, 0, 0.38); -} -.mat-mdc-fab.mat-unthemed, -.mat-mdc-mini-fab.mat-unthemed { - --mdc-fab-container-color: white; - --mdc-fab-icon-color: black; - --mat-mdc-fab-color: #000; -} -.mat-mdc-fab.mat-primary, -.mat-mdc-mini-fab.mat-primary { - --mdc-fab-container-color: #3f51b5; - --mdc-fab-icon-color: white; - --mat-mdc-fab-color: #fff; -} -.mat-mdc-fab.mat-accent, -.mat-mdc-mini-fab.mat-accent { - --mdc-fab-container-color: #ff4081; - --mdc-fab-icon-color: white; - --mat-mdc-fab-color: #fff; -} -.mat-mdc-fab.mat-warn, -.mat-mdc-mini-fab.mat-warn { - --mdc-fab-container-color: #f44336; - --mdc-fab-icon-color: white; - --mat-mdc-fab-color: #fff; -} - -.mdc-fab--extended { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif)); - font-size: var(--mdc-typography-button-font-size, 14px); - line-height: var(--mdc-typography-button-line-height, 36px); - font-weight: var(--mdc-typography-button-font-weight, 500); - letter-spacing: var(--mdc-typography-button-letter-spacing, 0.0892857143em); - -webkit-text-decoration: var(--mdc-typography-button-text-decoration, none); - text-decoration: var(--mdc-typography-button-text-decoration, none); - text-transform: var(--mdc-typography-button-text-transform, none); -} -.mat-mdc-extended-fab { - --mdc-extended-fab-label-text-font: Roboto, sans-serif; - --mdc-extended-fab-label-text-size: 14px; - --mdc-extended-fab-label-text-tracking: 0.0892857143em; - --mdc-extended-fab-label-text-weight: 500; -} - -.mat-mdc-snack-bar-container { - --mdc-snackbar-container-color: #333333; - --mdc-snackbar-supporting-text-color: rgba(255, 255, 255, 0.87); - --mat-snack-bar-button-color: #ff4081; -} - -.mat-mdc-snack-bar-container { - --mdc-snackbar-supporting-text-font: Roboto, sans-serif; - --mdc-snackbar-supporting-text-line-height: 20px; - --mdc-snackbar-supporting-text-size: 14px; - --mdc-snackbar-supporting-text-weight: 400; -} - -html { - --mat-table-background-color: white; - --mat-table-header-headline-color: rgba(0, 0, 0, 0.87); - --mat-table-row-item-label-text-color: rgba(0, 0, 0, 0.87); - --mat-table-row-item-outline-color: rgba(0, 0, 0, 0.12); -} - -html { - --mat-table-header-container-height: 56px; - --mat-table-footer-container-height: 52px; - --mat-table-row-item-container-height: 52px; -} - -html { - --mat-table-header-headline-font: Roboto, sans-serif; - --mat-table-header-headline-line-height: 22px; - --mat-table-header-headline-size: 14px; - --mat-table-header-headline-weight: 500; - --mat-table-header-headline-tracking: 0.0071428571em; - --mat-table-row-item-label-text-font: Roboto, sans-serif; - --mat-table-row-item-label-text-line-height: 20px; - --mat-table-row-item-label-text-size: 14px; - --mat-table-row-item-label-text-weight: 400; - --mat-table-row-item-label-text-tracking: 0.0178571429em; - --mat-table-footer-supporting-text-font: Roboto, sans-serif; - --mat-table-footer-supporting-text-line-height: 20px; - --mat-table-footer-supporting-text-size: 14px; - --mat-table-footer-supporting-text-weight: 400; - --mat-table-footer-supporting-text-tracking: 0.0178571429em; -} - -.mat-mdc-progress-spinner { - --mdc-circular-progress-active-indicator-color: #3f51b5; -} -.mat-mdc-progress-spinner.mat-accent { - --mdc-circular-progress-active-indicator-color: #ff4081; -} -.mat-mdc-progress-spinner.mat-warn { - --mdc-circular-progress-active-indicator-color: #f44336; -} - -.mat-badge { - position: relative; -} -.mat-badge.mat-badge { - overflow: visible; -} - -.mat-badge-content { - position: absolute; - text-align: center; - display: inline-block; - border-radius: 50%; - transition: transform 200ms ease-in-out; - transform: scale(0.6); - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - pointer-events: none; - background-color: var(--mat-badge-background-color); - color: var(--mat-badge-text-color); - font-family: Roboto, sans-serif; - /* @alternate */ - font-family: var(--mat-badge-text-font, Roboto, sans-serif); - font-size: 12px; - /* @alternate */ - font-size: var(--mat-badge-text-size, 12px); - font-weight: 600; - /* @alternate */ - font-weight: var(--mat-badge-text-weight, 600); -} -.cdk-high-contrast-active .mat-badge-content { - outline: solid 1px; - border-radius: 0; -} - -.mat-badge-disabled .mat-badge-content { - background-color: var(--mat-badge-disabled-state-background-color); - color: var(--mat-badge-disabled-state-text-color); -} - -.mat-badge-hidden .mat-badge-content { - display: none; -} - -.ng-animate-disabled .mat-badge-content, -.mat-badge-content._mat-animation-noopable { - transition: none; -} - -.mat-badge-content.mat-badge-active { - transform: none; -} - -.mat-badge-small .mat-badge-content { - width: 16px; - height: 16px; - line-height: 16px; - font-size: 9px; - /* @alternate */ - font-size: var(--mat-badge-small-size-text-size, 9px); -} -.mat-badge-small.mat-badge-above .mat-badge-content { - top: -8px; -} -.mat-badge-small.mat-badge-below .mat-badge-content { - bottom: -8px; -} -.mat-badge-small.mat-badge-before .mat-badge-content { - left: -16px; -} -[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content { - left: auto; - right: -16px; -} -.mat-badge-small.mat-badge-after .mat-badge-content { - right: -16px; -} -[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content { - right: auto; - left: -16px; -} -.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { - left: -8px; -} -[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { - left: auto; - right: -8px; -} -.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { - right: -8px; -} -[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { - right: auto; - left: -8px; -} - -.mat-badge-medium .mat-badge-content { - width: 22px; - height: 22px; - line-height: 22px; -} -.mat-badge-medium.mat-badge-above .mat-badge-content { - top: -11px; -} -.mat-badge-medium.mat-badge-below .mat-badge-content { - bottom: -11px; -} -.mat-badge-medium.mat-badge-before .mat-badge-content { - left: -22px; -} -[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content { - left: auto; - right: -22px; -} -.mat-badge-medium.mat-badge-after .mat-badge-content { - right: -22px; -} -[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content { - right: auto; - left: -22px; -} -.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { - left: -11px; -} -[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { - left: auto; - right: -11px; -} -.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { - right: -11px; -} -[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { - right: auto; - left: -11px; -} - -.mat-badge-large .mat-badge-content { - width: 28px; - height: 28px; - line-height: 28px; - font-size: 24px; - /* @alternate */ - font-size: var(--mat-badge-large-size-text-size, 24px); -} -.mat-badge-large.mat-badge-above .mat-badge-content { - top: -14px; -} -.mat-badge-large.mat-badge-below .mat-badge-content { - bottom: -14px; -} -.mat-badge-large.mat-badge-before .mat-badge-content { - left: -28px; -} -[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content { - left: auto; - right: -28px; -} -.mat-badge-large.mat-badge-after .mat-badge-content { - right: -28px; -} -[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content { - right: auto; - left: -28px; -} -.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { - left: -14px; -} -[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { - left: auto; - right: -14px; -} -.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { - right: -14px; -} -[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { - right: auto; - left: -14px; -} - -html { - --mat-badge-background-color: #3f51b5; - --mat-badge-text-color: white; - --mat-badge-disabled-state-background-color: #b9b9b9; - --mat-badge-disabled-state-text-color: rgba(0, 0, 0, 0.38); -} - -.mat-badge-accent { - --mat-badge-background-color: #ff4081; - --mat-badge-text-color: white; -} - -.mat-badge-warn { - --mat-badge-background-color: #f44336; - --mat-badge-text-color: white; -} - -html { - --mat-badge-text-font: Roboto, sans-serif; - --mat-badge-text-size: 12px; - --mat-badge-text-weight: 600; - --mat-badge-small-size-text-size: 9px; - --mat-badge-large-size-text-size: 24px; -} - -html { - --mat-bottom-sheet-container-text-color: rgba(0, 0, 0, 0.87); - --mat-bottom-sheet-container-background-color: white; -} - -html { - --mat-bottom-sheet-container-text-font: Roboto, sans-serif; - --mat-bottom-sheet-container-text-line-height: 20px; - --mat-bottom-sheet-container-text-size: 14px; - --mat-bottom-sheet-container-text-tracking: 0.0178571429em; - --mat-bottom-sheet-container-text-weight: 400; -} - -html { - --mat-legacy-button-toggle-text-color: rgba(0, 0, 0, 0.38); - --mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, 0.12); - --mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, 0.54); - --mat-legacy-button-toggle-selected-state-background-color: #e0e0e0; - --mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, 0.26); - --mat-legacy-button-toggle-disabled-state-background-color: #eeeeee; - --mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd; - --mat-standard-button-toggle-text-color: rgba(0, 0, 0, 0.87); - --mat-standard-button-toggle-background-color: white; - --mat-standard-button-toggle-state-layer-color: black; - --mat-standard-button-toggle-selected-state-background-color: #e0e0e0; - --mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, 0.87); - --mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, 0.26); - --mat-standard-button-toggle-disabled-state-background-color: white; - --mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, 0.87); - --mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd; - --mat-standard-button-toggle-divider-color: #e0e0e0; -} - -html { - --mat-standard-button-toggle-height: 48px; -} - -html { - --mat-legacy-button-toggle-text-font: Roboto, sans-serif; - --mat-standard-button-toggle-text-font: Roboto, sans-serif; -} - -html { - --mat-datepicker-calendar-date-selected-state-text-color: white; - --mat-datepicker-calendar-date-selected-state-background-color: #3f51b5; - --mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, 0.4); - --mat-datepicker-calendar-date-today-selected-state-outline-color: white; - --mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, 0.3); - --mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, 0.3); - --mat-datepicker-toggle-active-state-icon-color: #3f51b5; - --mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, 0.2); - --mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, 0.2); - --mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5; - --mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e; - --mat-datepicker-toggle-icon-color: rgba(0, 0, 0, 0.54); - --mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, 0.54); - --mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, 0.54); - --mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, 0.54); - --mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, 0.12); - --mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, 0.54); - --mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, 0.38); - --mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, 0.18); - --mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, 0.87); - --mat-datepicker-calendar-date-outline-color: transparent; - --mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, 0.38); - --mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, 0.24); - --mat-datepicker-range-input-separator-color: rgba(0, 0, 0, 0.87); - --mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, 0.38); - --mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, 0.38); - --mat-datepicker-calendar-container-background-color: white; - --mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, 0.87); -} - -.mat-datepicker-content.mat-accent { - --mat-datepicker-calendar-date-selected-state-text-color: white; - --mat-datepicker-calendar-date-selected-state-background-color: #ff4081; - --mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, 0.4); - --mat-datepicker-calendar-date-today-selected-state-outline-color: white; - --mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, 0.3); - --mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, 0.3); - --mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, 0.2); - --mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, 0.2); - --mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5; - --mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e; -} -.mat-datepicker-content.mat-warn { - --mat-datepicker-calendar-date-selected-state-text-color: white; - --mat-datepicker-calendar-date-selected-state-background-color: #f44336; - --mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, 0.4); - --mat-datepicker-calendar-date-today-selected-state-outline-color: white; - --mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, 0.3); - --mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, 0.3); - --mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, 0.2); - --mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, 0.2); - --mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5; - --mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e; -} - -.mat-datepicker-toggle-active.mat-accent { - --mat-datepicker-toggle-active-state-icon-color: #ff4081; -} -.mat-datepicker-toggle-active.mat-warn { - --mat-datepicker-toggle-active-state-icon-color: #f44336; -} - -.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base { - --mdc-icon-button-state-layer-size: 40px; - width: var(--mdc-icon-button-state-layer-size); - height: var(--mdc-icon-button-state-layer-size); - padding: 8px; -} -.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target { - display: none; -} - -html { - --mat-datepicker-calendar-text-font: Roboto, sans-serif; - --mat-datepicker-calendar-text-size: 13px; - --mat-datepicker-calendar-body-label-text-size: 14px; - --mat-datepicker-calendar-body-label-text-weight: 500; - --mat-datepicker-calendar-period-button-text-size: 14px; - --mat-datepicker-calendar-period-button-text-weight: 500; - --mat-datepicker-calendar-header-text-size: 11px; - --mat-datepicker-calendar-header-text-weight: 400; -} - -html { - --mat-divider-color: rgba(0, 0, 0, 0.12); -} - -html { - --mat-expansion-container-background-color: white; - --mat-expansion-container-text-color: rgba(0, 0, 0, 0.87); - --mat-expansion-actions-divider-color: rgba(0, 0, 0, 0.12); - --mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, 0.26); - --mat-expansion-header-text-color: rgba(0, 0, 0, 0.87); - --mat-expansion-header-description-color: rgba(0, 0, 0, 0.54); - --mat-expansion-header-indicator-color: rgba(0, 0, 0, 0.54); -} - -html { - --mat-expansion-header-collapsed-state-height: 48px; - --mat-expansion-header-expanded-state-height: 64px; -} - -html { - --mat-expansion-header-text-font: Roboto, sans-serif; - --mat-expansion-header-text-size: 14px; - --mat-expansion-header-text-weight: 500; - --mat-expansion-header-text-line-height: inherit; - --mat-expansion-header-text-tracking: inherit; - --mat-expansion-container-text-font: Roboto, sans-serif; - --mat-expansion-container-text-line-height: 20px; - --mat-expansion-container-text-size: 14px; - --mat-expansion-container-text-tracking: 0.0178571429em; - --mat-expansion-container-text-weight: 400; -} - -html { - --mat-grid-list-tile-header-primary-text-size: 14px; - --mat-grid-list-tile-header-secondary-text-size: 12px; - --mat-grid-list-tile-footer-primary-text-size: 14px; - --mat-grid-list-tile-footer-secondary-text-size: 12px; -} - -html { - --mat-icon-color: inherit; -} - -.mat-icon.mat-primary { - --mat-icon-color: #3f51b5; -} -.mat-icon.mat-accent { - --mat-icon-color: #ff4081; -} -.mat-icon.mat-warn { - --mat-icon-color: #f44336; -} - -html { - --mat-sidenav-container-divider-color: rgba(0, 0, 0, 0.12); - --mat-sidenav-container-background-color: white; - --mat-sidenav-container-text-color: rgba(0, 0, 0, 0.87); - --mat-sidenav-content-background-color: #fafafa; - --mat-sidenav-content-text-color: rgba(0, 0, 0, 0.87); - --mat-sidenav-scrim-color: rgba(0, 0, 0, 0.6); -} - -html { - --mat-stepper-header-icon-foreground-color: white; - --mat-stepper-header-selected-state-icon-background-color: #3f51b5; - --mat-stepper-header-selected-state-icon-foreground-color: white; - --mat-stepper-header-done-state-icon-background-color: #3f51b5; - --mat-stepper-header-done-state-icon-foreground-color: white; - --mat-stepper-header-edit-state-icon-background-color: #3f51b5; - --mat-stepper-header-edit-state-icon-foreground-color: white; - --mat-stepper-container-color: white; - --mat-stepper-line-color: rgba(0, 0, 0, 0.12); - --mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-stepper-header-label-text-color: rgba(0, 0, 0, 0.54); - --mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, 0.54); - --mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, 0.87); - --mat-stepper-header-error-state-label-text-color: #f44336; - --mat-stepper-header-icon-background-color: rgba(0, 0, 0, 0.54); - --mat-stepper-header-error-state-icon-foreground-color: #f44336; - --mat-stepper-header-error-state-icon-background-color: transparent; -} -html .mat-step-header.mat-accent { - --mat-stepper-header-icon-foreground-color: white; - --mat-stepper-header-selected-state-icon-background-color: #ff4081; - --mat-stepper-header-selected-state-icon-foreground-color: white; - --mat-stepper-header-done-state-icon-background-color: #ff4081; - --mat-stepper-header-done-state-icon-foreground-color: white; - --mat-stepper-header-edit-state-icon-background-color: #ff4081; - --mat-stepper-header-edit-state-icon-foreground-color: white; -} -html .mat-step-header.mat-warn { - --mat-stepper-header-icon-foreground-color: white; - --mat-stepper-header-selected-state-icon-background-color: #f44336; - --mat-stepper-header-selected-state-icon-foreground-color: white; - --mat-stepper-header-done-state-icon-background-color: #f44336; - --mat-stepper-header-done-state-icon-foreground-color: white; - --mat-stepper-header-edit-state-icon-background-color: #f44336; - --mat-stepper-header-edit-state-icon-foreground-color: white; -} - -html { - --mat-stepper-header-height: 72px; -} - -html { - --mat-stepper-container-text-font: Roboto, sans-serif; - --mat-stepper-header-label-text-font: Roboto, sans-serif; - --mat-stepper-header-label-text-size: 14px; - --mat-stepper-header-label-text-weight: 400; - --mat-stepper-header-error-state-label-text-size: 16px; - --mat-stepper-header-selected-state-label-text-size: 16px; - --mat-stepper-header-selected-state-label-text-weight: 400; -} - -.mat-sort-header-arrow { - color: #757575; -} - -html { - --mat-toolbar-container-background-color: whitesmoke; - --mat-toolbar-container-text-color: rgba(0, 0, 0, 0.87); -} - -.mat-toolbar.mat-primary { - --mat-toolbar-container-background-color: #3f51b5; - --mat-toolbar-container-text-color: white; -} -.mat-toolbar.mat-accent { - --mat-toolbar-container-background-color: #ff4081; - --mat-toolbar-container-text-color: white; -} -.mat-toolbar.mat-warn { - --mat-toolbar-container-background-color: #f44336; - --mat-toolbar-container-text-color: white; -} - -html { - --mat-toolbar-standard-height: 64px; - --mat-toolbar-mobile-height: 56px; -} - -html { - --mat-toolbar-title-text-font: Roboto, sans-serif; - --mat-toolbar-title-text-line-height: 32px; - --mat-toolbar-title-text-size: 20px; - --mat-toolbar-title-text-tracking: 0.0125em; - --mat-toolbar-title-text-weight: 500; -} - -.mat-tree { - background: white; -} - -.mat-tree-node, -.mat-nested-tree-node { - color: rgba(0, 0, 0, 0.87); -} - -.mat-tree-node { - min-height: 48px; -} - -.mat-tree { - font-family: Roboto, sans-serif; -} - -.mat-tree-node, -.mat-nested-tree-node { - font-weight: 400; - font-size: 14px; -} - -:host .table-row-wrapper { - display: flex; - flex-wrap: wrap; - align-items: flex-end; - margin: 5px; - /* border: 2px solid red; */ - border-radius: 0.5rem; - box-shadow: 1px 1px 8px -3px #000; -} -:host .table-row-wrapper:hover { - background-color: rgba(0, 0, 0, 0.12); - cursor: pointer; -} -:host .table-row-wrapper .table-row { - width: 200px; - min-width: 200px; - padding: 0.5rem; - background: rgba(0, 0, 0, 0.05); - margin: 4px; - border-radius: 4px; -} -:host .table-row-wrapper .table-row > h3 { - display: inline-block; - font-weight: 500; - line-height: initial; - letter-spacing: inherit; - margin: 0; -} -:host .is-data-wrapper { - width: 100%; - display: block; -} -:host .player-card-data { - display: flex; -} -:host .player-card-data > div { - padding: 0.5rem; -} -:host .player-card { - margin: 0.5rem; - flex: 5; - border: 5px solid transparent; - transition: all 0.3s; -} -:host .player-card .btn-close { - position: absolute; - top: 0; - right: 0; - opacity: 0; - transition: opacity 0.3s; -} -:host .player-card.active { - flex: 7; - border-color: #3f51b5; -} -:host .player-card .player-controls { - display: flex; - align-items: center; - justify-content: center; - background-color: white; - border-radius: 5rem; - margin: 0 auto; - position: absolute; - left: 0; - right: 0; - bottom: -2.5rem; - border: 3px solid; - border-color: #3f51b5; - width: 14rem; - opacity: 0; - transition: opacity 0.3s; - z-index: 10; -} -:host .player-card .player-controls > * { - margin: 0.3rem; -} -:host .player-card:hover .btn-close, -:host .player-card:hover .player-controls { - opacity: 1; -}`, "",{"version":3,"sources":["webpack://./node_modules/@angular/material/core/ripple/_ripple.scss","webpack://./src/app/components/controls/tap/tap-rtp-streams/tap-rtp-streams.component.scss","webpack://./node_modules/@angular/cdk/a11y/_index.scss","webpack://./node_modules/@angular/cdk/overlay/_index.scss","webpack://./node_modules/@angular/cdk/text-field/_index.scss","webpack://./node_modules/@angular/material/core/focus-indicators/_private.scss","webpack://./node_modules/@angular/material/core/style/_layout-common.scss","webpack://./node_modules/@angular/material/core/ripple/_ripple-theme.scss","webpack://./node_modules/@angular/material/core/style/_sass-utils.scss","webpack://./node_modules/@material/theme/_css.scss","webpack://./node_modules/@angular/material/core/option/_option-theme.scss","webpack://./node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss","webpack://./node_modules/@angular/material/core/_core-theme.scss","webpack://./node_modules/@angular/material/card/_card-theme.scss","webpack://./node_modules/@angular/material/progress-bar/_progress-bar-theme.scss","webpack://./node_modules/@material/linear-progress/_linear-progress-theme.scss","webpack://./node_modules/@material/theme/_gss.scss","webpack://./node_modules/@material/dom/_dom.scss","webpack://./node_modules/@angular/material/tooltip/_tooltip-theme.scss","webpack://./node_modules/@angular/material/form-field/_form-field-subscript.scss","webpack://./node_modules/@material/typography/_typography.scss","webpack://./node_modules/@angular/material/form-field/_form-field-focus-overlay.scss","webpack://./node_modules/@angular/material/form-field/_mdc-text-field-theme-variable-refresh.scss","webpack://./node_modules/@angular/material/form-field/_form-field-native-select.scss","webpack://./node_modules/@angular/material/form-field/_form-field-theme.scss","webpack://./node_modules/@angular/material/form-field/_form-field-density.scss","webpack://./node_modules/@angular/material/select/_select-theme.scss","webpack://./node_modules/@angular/material/dialog/_dialog-theme.scss","webpack://./node_modules/@angular/material/chips/_chips-theme.scss","webpack://./node_modules/@angular/material/slide-toggle/_slide-toggle-theme.scss","webpack://./node_modules/@material/form-field/_form-field.scss","webpack://./node_modules/@angular/material/radio/_radio-theme.scss","webpack://./node_modules/@angular/material/slider/_slider-theme.scss","webpack://./node_modules/@angular/material/list/_list-theme.scss","webpack://./node_modules/@material/list/_list.scss","webpack://./node_modules/@angular/material/core/typography/_typography-utils.scss","webpack://./node_modules/@angular/material/tabs/_tabs-theme.scss","webpack://./node_modules/@angular/material/checkbox/_checkbox-theme.scss","webpack://./node_modules/@angular/material/button/_button-theme.scss","webpack://./node_modules/@angular/material/button/_button-theme-private.scss","webpack://./node_modules/@material/button/_button-base.scss","webpack://./node_modules/@angular/material/button/_icon-button-theme.scss","webpack://./node_modules/@angular/material/button/_fab-theme.scss","webpack://./node_modules/@material/fab/_fab.scss","webpack://./node_modules/@angular/material/snack-bar/_snack-bar-theme.scss","webpack://./node_modules/@angular/material/table/_table-theme.scss","webpack://./node_modules/@angular/material/progress-spinner/_progress-spinner-theme.scss","webpack://./node_modules/@angular/material/badge/_badge-theme.scss","webpack://./node_modules/@angular/material/datepicker/_datepicker-theme.scss","webpack://./node_modules/@angular/material/icon/_icon-theme.scss","webpack://./node_modules/@angular/material/stepper/_stepper-theme.scss","webpack://./node_modules/@angular/material/sort/_sort-theme.scss","webpack://./node_modules/@angular/material/toolbar/_toolbar-theme.scss","webpack://./node_modules/@angular/material/tree/_tree-theme.scss"],"names":[],"mappings":"AAKE;EACE,gBAAA;EAIA,kBAAA;ACPJ;ADcI;EACE,wBAAA;ACZN;;ADgBE;EACE,iBAAA;ACbJ;;ADgBE;EACE,kBAAA;EACA,kBAAA;EACA,oBAAA;EAEA,6DAAA;EAIA,2BAAA;ACjBJ;ACgCI;EFXE,aAAA;AClBN;;AClBE;EACE,SAAA;EACA,mBAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,UAAA;EACA,kBAAA;EACA,UAAA;EAIA,mBAAA;EAGA,UAAA;EAGA,wBAAA;EACA,qBAAA;EAMA,OAAA;ADSJ;ACPI;EACE,UAAA;EACA,QAAA;ADSN;;AEzBE;EAEE,oBAAA;EAGA,MAAA;EACA,OAAA;EACA,YAAA;EACA,WAAA;AFyBJ;;AErBE;EACE,eAAA;EACA,aA3BwB;AFmD5B;AEtBI;EAGE,aAAA;AFsBN;;AEdE;EACE,aAAA;EACA,kBAAA;EACA,aA1Cc;AF2DlB;;AEbE;EAGE,kBAAA;EACA,oBAAA;EACA,sBAAA;EACA,aApDc;EAwDd,aAAA;EACA,eAAA;EACA,gBAAA;AFWJ;;AERE;EAEE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EAEA,aApEuB;EAqEvB,oBAAA;EACA,wCAAA;EACA,0DAAA;EACA,UAAA;AFSJ;AEPI;EACE,UAAA;AFSN;AEJM;EAGE,YAAA;AFIR;;AECE;EACE,+BAtFqB;AFwFzB;;AECE;EAEE,qDAAA;EACA,kBAAA;EACA,UAAA;AFCJ;AEKI;EACE,UAAA;EACA,mBAAA;AFHN;;AEOE;EACE,gBAAA;AFJJ;;AESE;EACE,kBAAA;EACA,aArHc;EA0Hd,aAAA;EAIA,sBAAA;EAGA,cAAA;EACA,eAAA;AFfJ;;AEmBE;EACE,eAAA;EAKA,WAAA;EAKA,kBAAA;AFxBJ;;AGzHE;EACE,YAAA;AH4HJ;;AGtHE;EAyCA,yBAAA;EACA,kCAAA;EAxCE,uBAAA;EACA,2BAAA;AH0HJ;;AGjHE;EA6BA,yBAAA;EACA,kCAAA;EA5BE,oBAAA;AHqHJ;;AG3GE,2CAAA,IAAA,EAAA;AACA,yCAAA,IAAA,EAAA;AAEA;EAEE,+CAAA;AH4GJ;;AGzGE;EAEE,6CAAA;AH2GJ;;AI1IE;EACE,kBAAA;AJ6IJ;AI3II;ECfF,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,kBAAA;EDaI,sBAAA;EACA,oBAAA;EACA,iDAAA;EACA,wJAAA;EAYA,4DAAA;AJsIN;AI9HI;EACE,WAAA;AJgIN;;ACrFM;EG7BA,oCAAA;AJsHN;;AIjKE;EACE,kBAAA;AJoKJ;AIlKI;ECfF,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,kBAAA;EDaI,sBAAA;EACA,oBAAA;EACA,qDAAA;EACA,oKAAA;EAYA,gEAAA;AJ6JN;AIrJI;EACE,WAAA;AJuJN;;AC5GM;EG7BA,wCAAA;AJ6IN;;AM3LE;EAII,oCAAA;AN2LN;;AO/LW;ECmEP,qDAAA;EAAA,kDAAA;EAAA,yDAAA;EAAA,yDAAA;EAAA,4DAAA;ARoIJ;;AShMI;ED4DA,qDAAA;ARwIJ;;AS/LI;EDuDA,qDAAA;AR4IJ;;AO/MW;ECmEP,oDAAA;ARgJJ;;AUvLE;EACE,0BAXe;AVqMnB;AUzLI;EACE,cANa;AViMnB;;AU/NI;;EACE,cAkBM;AViNZ;AU/NI;;EAKE,mBASM;AVqNZ;AUlOM;;EACE,cAeO;AVsNf;;AU5OI;;EACE,cAmBK;AV6NX;AU5OI;;EAKE,mBAUK;AViOX;AU/OM;;EACE,cAeO;AVmOf;;AUzPI;;EACE,cAmBK;AV0OX;AUzPI;;EAKE,mBAUK;AV8OX;AU5PM;;EACE,cAeO;AVgPf;;AUtQI;;EACE,cAoBG;AVsPT;AUtQI;;EAKE,mBAWG;AV0PT;AUzQM;;EACE,cAeO;AV6Pf;;AUvNI;;EACE,cA/Ba;AV0PnB;AUxNI;;EACE,mBAnCa;AV8PnB;;AW7QE;EAIE,yBAAA;EACA,0BAAA;AX6QJ;;AWnQI;EH0CA,wHAAA;AR6NJ;;AWvQI;EH0CA,yHAAA;ARiOJ;;AW3QI;EH0CA,yHAAA;ARqOJ;;AW/QI;EH0CA,yHAAA;ARyOJ;;AWnRI;EH0CA,0HAAA;AR6OJ;;AWvRI;EH0CA,0HAAA;ARiPJ;;AW3RI;EH0CA,2HAAA;ARqPJ;;AW/RI;EH0CA,2HAAA;ARyPJ;;AWnSI;EH0CA,2HAAA;AR6PJ;;AWvSI;EH0CA,2HAAA;ARiQJ;;AW3SI;EH0CA,4HAAA;ARqQJ;;AW/SI;EH0CA,4HAAA;ARyQJ;;AWnTI;EH0CA,4HAAA;AR6QJ;;AWvTI;EH0CA,4HAAA;ARiRJ;;AW3TI;EH0CA,4HAAA;ARqRJ;;AW/TI;EH0CA,4HAAA;ARyRJ;;AWnUI;EH0CA,6HAAA;AR6RJ;;AWvUI;EH0CA,6HAAA;ARiSJ;;AW3UI;EH0CA,6HAAA;ARqSJ;;AW/UI;EH0CA,6HAAA;ARySJ;;AWnVI;EH0CA,8HAAA;AR6SJ;;AWvVI;EH0CA,8HAAA;ARiTJ;;AW3VI;EH0CA,8HAAA;ARqTJ;;AW/VI;EH0CA,8HAAA;ARyTJ;;AWnWI;EH0CA,8HAAA;AR6TJ;;AWhWI;EACE,aAAA;AXmWN;;AOpYW;ECmEP,gDAAA;EAAA,yCAAA;EAAA,kCAAA;EAAA,2CAAA;EAAA,mCAAA;ARyUJ;;AO5YW;ECmEP,kDAAA;EAAA,2CAAA;EAAA,oCAAA;EAAA,6CAAA;EAAA,qCAAA;ARiVJ;;AYtYE;EJqDE,0CAAA;EAAA,sJAAA;EAAA,0CAAA;EAAA,sDAAA;EAAA,qJAAA;EAAA,mDAAA;AR0VJ;;AYhYE;EJsCE,8CAAA;EAAA,uCAAA;EAAA,gCAAA;EAAA,wCAAA;EAAA,iCAAA;EAAA,iDAAA;EAAA,0CAAA;EAAA,mCAAA;EAAA,iDAAA;EAAA,oCAAA;ARuWJ;;Aa1ZE;ELmDE,qDAAA;EAAA,0DAAA;AR4WJ;Ac9PI;EACE;IClIF,YAAA,EAAA,aAAA;EfmYF;AACF;AclTE;EN3EI,yCAAA;EOZF,eAAA;EPwBA,iFAAA;ARsXJ;AcnTM;EAJJ;IAKM,8BAAA;EdsTN;AACF;AgBtXE;EF0DA;IASM,6BAAA;INxEJ,mVAAA;ERgYF;AACF;Ac5SE;ENjGI,yCAAA;EOZF,eAAA;EPwBA,iFAAA;ARsYJ;AatbI;ELgDA,qDAAA;EAAA,2DAAA;AR0YJ;Ac5RI;EACE;IClIF,YAAA,EAAA,aAAA;EfiaF;AACF;AchVE;EN3EI,0CAAA;EOZF,eAAA;EPwBA,kFAAA;ARoZJ;AcjVM;EAJJ;IAKM,8BAAA;EdoVN;AACF;AgBpZE;EF0DA;IASM,6BAAA;INxEJ,oVAAA;ER8ZF;AACF;Ac1UE;ENjGI,0CAAA;EOZF,eAAA;EPwBA,kFAAA;ARoaJ;AahdI;EL4CA,qDAAA;EAAA,0DAAA;ARwaJ;Ac1TI;EACE;IClIF,YAAA,EAAA,aAAA;Ef+bF;AACF;Ac9WE;EN3EI,yCAAA;EOZF,eAAA;EPwBA,iFAAA;ARkbJ;Ac/WM;EAJJ;IAKM,8BAAA;EdkXN;AACF;AgBlbE;EF0DA;IASM,6BAAA;INxEJ,mVAAA;ER4bF;AACF;AcxWE;ENjGI,yCAAA;EOZF,eAAA;EPwBA,iFAAA;ARkcJ;AiBtgBE;EToEE,4CAAA;EAAA,+CAAA;ARscJ;;AiB/fE;ETyDE,4DAAA;EAAA,8CAAA;EAAA,+CAAA;EAAA,4DAAA;AR6cJ;;AOhhBW;ECmEP,4CAAA;EAAA,6DAAA;EAAA,uEAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,4DAAA;EAAA,sEAAA;EAAA,6DAAA;EAAA,sEAAA;EAAA,wEAAA;EAAA,6DAAA;EAAA,uDAAA;EAAA,kDAAA;EAAA,mEAAA;EAAA,4EAAA;EAAA,yEAAA;EAAA,6DAAA;EAAA,mEAAA;EAAA,mEAAA;EAAA,8CAAA;EAAA,sDAAA;EAAA,yEAAA;EAAA,8DAAA;EAAA,wEAAA;EAAA,+DAAA;EAAA,wEAAA;EAAA,0EAAA;EAAA,oDAAA;EAAA,+DAAA;EAAA,yDAAA;EAAA,4DAAA;EAAA,qEAAA;EAAA,kEAAA;EAAA,4DAAA;EAAA,4DAAA;EAAA,sDAAA;EAAA,2EAAA;ARqfJ;;AkBlgBE;EVaE,sCAAA;ARyfJ;;AkBhgBE;;ECkQE,kCAAA;EACA,mCAAA;EX5PA,sDAAA;EAAA,6DAAA;EAAA,oDAAA;EAAA,6DAAA;EAAA,wDAAA;ARogBJ;;AoB1jBE;EACE,qCCHwB;ArBgkB5B;;AoB1jBE;EACE,aAPc;ApBokBlB;;AoB1jBE;EACE,aAZc;ApBykBlB;;AsBxfM;EACE,0BAtBkB;AtBihB1B;AsBtfU;EACE,8BAAA;AtBwfZ;AsBnfU;EACE,+BAAA;AtBqfZ;AsBhfU;EACE,8BAAA;AtBkfZ;AsB5eQ;EACE,0BA9CyB;AtB4hBnC;;AuB3kBM;Ef2CF,4CAAA;EAAA,6DAAA;EAAA,wEAAA;EAAA,8CAAA;EAAA,sDAAA;EAAA,0EAAA;ARyiBJ;;AuB7kBM;EfoCF,4CAAA;EAAA,6DAAA;EAAA,uEAAA;EAAA,8CAAA;EAAA,sDAAA;EAAA,yEAAA;ARkjBJ;;AuBrkBQ;EACE,kCAAA;AvBwkBV;;AuBlkBU;EACE,iBAAA;EACA,mCAAA;AvBqkBZ;;AwBjkBE;EACE,gBA7BO;AxBimBX;;AwB7jBE;EACE,SAAA;AxBgkBJ;;AwB1jBE;EAEE;;qEAAA;EAGA,oDAAA;AxB4jBJ;;AwB5nBE;EACE,iBAAA;EACA,oBAAA;AxB+nBJ;;AwBjpBE;EACE,iBAAA;EACA,mBAAA;AxBopBJ;;AwBjpBE;EAEE,iBAAA;EACA,oBAAA;AxBmpBJ;;AO5pBW;ECmEP,2DAAA;EAAA,6CAAA;EAAA,sDAAA;EAAA,8CAAA;EAAA,6DAAA;EAAA,+CAAA;EAAA,wDAAA;EAAA,gDAAA;EAAA,wDAAA;EAAA,iDAAA;EAAA,0CAAA;EAAA,mDAAA;EAAA,2CAAA;EAAA,yDAAA;EAAA,wDAAA;EAAA,iDAAA;EAAA,0CAAA;EAAA,wDAAA;EAAA,2CAAA;AR+mBJ;;AOlrBW;ECmEP,0CAAA;EAAA,4DAAA;EAAA,6DAAA;EAAA,uDAAA;EAAA,qDAAA;EAAA,sDAAA;EAAA,yDAAA;EAAA,yDAAA;AR0nBJ;AyBvrBI;EjB6DA,0CAAA;EAAA,4DAAA;EAAA,6DAAA;EAAA,uDAAA;EAAA,qDAAA;EAAA,sDAAA;EAAA,0DAAA;EAAA,yDAAA;ARooBJ;AyB1rBI;EjBsDA,0CAAA;EAAA,4DAAA;EAAA,6DAAA;EAAA,uDAAA;EAAA,qDAAA;EAAA,sDAAA;EAAA,yDAAA;EAAA,yDAAA;AR8oBJ;;AOjtBW;ECmEP,kDAAA;EAAA,2CAAA;EAAA,oCAAA;EAAA,6CAAA;EAAA,qCAAA;ARspBJ;;AOztBW;ECmEP,0CAAA;AR0pBJ;;A0BhuBE;ElBsEE,mCAAA;EAAA,+CAAA;EAAA,sDAAA;ARgqBJ;;A0B7tBE;ElB6DE,6CAAA;EAAA,sCAAA;EAAA,+BAAA;EAAA,gCAAA;EAAA,uCAAA;EAAA,qDAAA;EAAA,8CAAA;EAAA,uCAAA;EAAA,wCAAA;EAAA,gDAAA;AR6qBJ;;A2BztBE;EnB4CE,6CAAA;EAAA,4CAAA;EAAA,qDAAA;EAAA,yCAAA;EAAA,0CAAA;EAAA,oCAAA;EAAA,wCAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,mEAAA;EAAA,0DAAA;AR2rBJ;A2B/tBM;EnBoCF,2CAAA;EAAA,4CAAA;EAAA,qDAAA;EAAA,yCAAA;EAAA,0CAAA;EAAA,kCAAA;EAAA,sCAAA;EAAA,+CAAA;EAAA,+CAAA;EAAA,iEAAA;EAAA,wDAAA;ARwsBJ;A2BvuBM;EnB+BF,2CAAA;EAAA,4CAAA;EAAA,qDAAA;EAAA,yCAAA;EAAA,0CAAA;EAAA,kCAAA;EAAA,sCAAA;EAAA,+CAAA;EAAA,+CAAA;EAAA,iEAAA;EAAA,wDAAA;ARqtBJ;A2B9uBM;EnByBF,2CAAA;EAAA,4CAAA;EAAA,qDAAA;EAAA,yCAAA;EAAA,0CAAA;EAAA,kCAAA;EAAA,sCAAA;EAAA,+CAAA;EAAA,+CAAA;EAAA,iEAAA;EAAA,wDAAA;ARkuBJ;;A2BpuBE;EnBEE,iCAAA;ARsuBJ;;A2BhvBE;EnBUE,8CAAA;EAAA,uCAAA;EAAA,gCAAA;EAAA,8CAAA;EAAA,iCAAA;AR8uBJ;;A4BtyBI;EpBwDA,sDAAA;EAAA,2CAAA;EAAA,sDAAA;EAAA,wDAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,mDAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,kDAAA;EAAA,0CAAA;EAAA,oDAAA;EAAA,+CAAA;EAAA,mDAAA;EAAA,sDAAA;EAAA,iDAAA;EAAA,qDAAA;EAAA,iEAAA;EAAA,mJAAA;EAAA,uCAAA;EAAA,2JAAA;EAAA,sCAAA;EAAA,mDAAA;EAAA,wDAAA;EAAA,kDAAA;EAAA,6CAAA;EAAA,mDAAA;EAAA,wDAAA;EAAA,kDAAA;EAAA,wCAAA;EAAA,qDAAA;EAAA,0DAAA;EAAA,oDAAA;EAAA,4CAAA;ARmxBJ;A6B3zBE;ErBwCE,uEAAA;ARsxBJ;A4Bz0BM;EACE,0BAAA;A5B20BR;A4Bv0BM;EpB8CF,sDAAA;EAAA,2CAAA;EAAA,sDAAA;EAAA,wDAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,mDAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,kDAAA;EAAA,0CAAA;ARsyBJ;A4B70BM;EpBuCF,sDAAA;EAAA,2CAAA;EAAA,sDAAA;EAAA,wDAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,mDAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,kDAAA;EAAA,0CAAA;ARmzBJ;;A4B7zBE;EpBUE,mCAAA;ARuzBJ;;A4B70BE;EpBsBE,sDAAA;EAAA,wCAAA;EAAA,sDAAA;EAAA,+CAAA;EAAA,yCAAA;AR+zBJ;A6Bv2BE;EVmSE,kCAAA;EACA,mCAAA;EXxQE,+BAAA;EOZF,eAAA;EPwBA,2GAAA;EAZE,mBAAA;EOZF,eAAA;EPwBA,0DAAA;EAZE,oBAAA;EOZF,eAAA;EPwBA,6DAAA;EAZE,gBAAA;EOZF,eAAA;EPwBA,yDAAA;EAZE,8BAAA;EOZF,eAAA;EPwBA,0EAAA;EAZE,wBAAA;EOZF,eAAA;EPwBA,6EAAA;UAAA,qEAAA;EAZE,uBAAA;EOZF,eAAA;EPwBA,mEAAA;ARw1BJ;;A6Bh4BE;ErBwCE,uEAAA;AR41BJ;;A8Bl5BI;EtBsDA,8CAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,sDAAA;EAAA,8DAAA;EAAA,8CAAA;EAAA,8CAAA;EAAA,wCAAA;EAAA,gDAAA;EAAA,8BAAA;EAAA,yCAAA;EAAA,qDAAA;AR22BJ;A8B15BI;EtB+CA,8CAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,sDAAA;EAAA,8DAAA;EAAA,8CAAA;EAAA,8CAAA;EAAA,wCAAA;EAAA,gDAAA;EAAA,8BAAA;EAAA,yCAAA;EAAA,qDAAA;ARy3BJ;A8Bj6BI;EtBwCA,8CAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,sDAAA;EAAA,8DAAA;EAAA,8CAAA;EAAA,8CAAA;EAAA,wCAAA;EAAA,gDAAA;EAAA,8BAAA;EAAA,yCAAA;EAAA,qDAAA;ARu4BJ;;A8Bx5BE;EtBiBE,kCAAA;AR24BJ;;A6Bn7BE;EVmSE,kCAAA;EACA,mCAAA;EX5PA,2GAAA;EAAA,sDAAA;EAAA,0DAAA;EAAA,yDAAA;EAAA,0EAAA;EAAA,6EAAA;UAAA,qEAAA;EAAA,gEAAA;ARu5BJ;;A+Bt9BI;EvB+DA,yCAAA;EAAA,0CAAA;EAAA,wCAAA;EAAA,8CAAA;EAAA,gDAAA;EAAA,2DAAA;EuB/CE,6CAAA;A/Bg9BN;A+B98BM;EvB6CF,kCAAA;EAAA,wCAAA;EAAA,wCAAA;EAAA,wCAAA;EAAA,0CAAA;EAAA,yDAAA;EAAA,8DAAA;EuBsBF,sCAAA;EACA,4DAAA;EACA,2DAAA;A/Bq5BF;A+Bt9BM;EvByCF,kCAAA;EAAA,wCAAA;EAAA,wCAAA;EAAA,wCAAA;EAAA,0CAAA;EAAA,yDAAA;EAAA,8DAAA;EuBsBF,sCAAA;EACA,6DAAA;EACA,4DAAA;A/Bi6BF;A+B99BM;EvBqCF,kCAAA;EAAA,wCAAA;EAAA,wCAAA;EAAA,wCAAA;EAAA,0CAAA;EAAA,yDAAA;EAAA,8DAAA;EuBsBF,sCAAA;EACA,4DAAA;EACA,2DAAA;A/B66BF;;A+B/9BI;EvB0BA,sDAAA;EAAA,wCAAA;EAAA,+CAAA;EAAA,sDAAA;EAAA,yCAAA;AR68BJ;;AOhhCW;ECmEP,qDAAA;EAAA,+CAAA;EAAA,4DAAA;EAAA,4DAAA;EAAA,iCAAA;ARq9BJ;;AOxhCW;ECmEP,mDAAA;EAAA,qCAAA;EAAA,8CAAA;EAAA,4CAAA;EAAA,sCAAA;AR69BJ;;AgClhCE;ExBqDE,0DAAA;EAAA,+DAAA;EAAA,4DAAA;EAAA,wEAAA;EAAA,6DAAA;EAAA,sEAAA;EAAA,qDAAA;EAAA,uDAAA;EAAA,wDAAA;EAAA,gEAAA;EAAA,kEAAA;EAAA,mEAAA;EAAA,gEAAA;EAAA,mDAAA;EAAA,oDAAA;EAAA,mDAAA;EAAA,oDAAA;ARi/BJ;;AgCliCE;;ExBiDE,8CAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,sDAAA;EAAA,8DAAA;EAAA,8CAAA;EAAA,8CAAA;EAAA,wCAAA;EAAA,gDAAA;AR8/BJ;;AgCziCI;;ExB2CA,8CAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,sDAAA;EAAA,8DAAA;EAAA,8CAAA;EAAA,8CAAA;EAAA,wCAAA;EAAA,gDAAA;AR2gCJ;;AgC/iCI;;ExBoCA,8CAAA;EAAA,gDAAA;EAAA,gDAAA;EAAA,sDAAA;EAAA,8DAAA;EAAA,8CAAA;EAAA,8CAAA;EAAA,wCAAA;EAAA,gDAAA;ARwhCJ;;AgCtjCE;ExB8BE,gEAAA;EAAA,kEAAA;EAAA,6CAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,2CAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,iEAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;AR4iCJ;;AgCvkCE;ExB2BE,gEAAA;EAAA,kEAAA;EAAA,6CAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,2CAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,iEAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;ARgkCJ;;AgCxlCE;ExBwBE,gEAAA;EAAA,kEAAA;EAAA,6CAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,2CAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,iEAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;ARolCJ;;AiC1XE;;EzB1tBE,cAAA;ARylCJ;AiCgTI;;EzBz4CA,cAAA;AR6lCJ;;AgCvmCI;;;EAGE,UAAA;AhC0mCN;;AgChmCE;ExBHE,oDAAA;EAAA,oDAAA;EAAA,sDAAA;ARymCJ;;AgC1lCM;EACE,YAAA;AhC6lCR;AgCnlCM;EACE,YAAA;AhCqlCR;;AgClkCE;ExB9CE,wDAAA;EAAA,iDAAA;EAAA,0CAAA;EAAA,mDAAA;EAAA,2CAAA;EAAA,6DAAA;EAAA,sDAAA;EAAA,+CAAA;EAAA,6DAAA;EAAA,gDAAA;EAAA,sEAAA;EAAA,+DAAA;EAAA,wDAAA;EAAA,sEAAA;EAAA,yDAAA;ARkoCJ;;AgC9kCE;EE1BA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,+BAAA;EAEA,0BAAA;AlC2mCF;;AO7sCW;ECmEP,yDAAA;EAAA,iDAAA;EAAA,uDAAA;EAAA,wDAAA;ARipCJ;;AOptCW;ECmEP,oCAAA;ARqpCJ;;AwB3pCE;EACE,gBA7BO;AxB2rCX;AwBvpCE;EACE,SAAA;AxBypCJ;AwBnpCE;EAEE;;qEAAA;EAGA,oDAAA;AxBopCJ;AwBptCE;EACE,gBAAA;EACA,mBAAA;AxBstCJ;AwBxuCE;EACE,gBAAA;EACA,mBAAA;AxB0uCJ;AwBvuCE;EAEE,gBAAA;EACA,mBAAA;AxBwuCJ;AwBjpCI;EACI,aAAA;AxBmpCR;;AOpvCW;ECmEP,uDAAA;EAAA,gDAAA;EAAA,yCAAA;EAAA,uDAAA;EAAA,0CAAA;EAAA,8CAAA;AR0rCJ;;AmCzvCE;E3B+DE,mDAAA;EAAA,2DAAA;EAAA,4CAAA;EAAA,8DAAA;EAAA,iDAAA;EAAA,6CAAA;EAAA,+CAAA;EAAA,oEAAA;EAAA,oEAAA;EAAA,uDAAA;EAAA,uDAAA;EAAA,sDAAA;EAAA,sDAAA;AR0sCJ;AmCtwCI;E3B4DA,mDAAA;EAAA,2DAAA;EAAA,4CAAA;EAAA,8DAAA;EAAA,iDAAA;EAAA,6CAAA;EAAA,+CAAA;EAAA,oEAAA;EAAA,oEAAA;EAAA,uDAAA;EAAA,uDAAA;EAAA,sDAAA;EAAA,sDAAA;ARytCJ;AmCjxCI;E3BwDA,mDAAA;EAAA,2DAAA;EAAA,4CAAA;EAAA,8DAAA;EAAA,iDAAA;EAAA,6CAAA;EAAA,+CAAA;EAAA,oEAAA;EAAA,oEAAA;EAAA,uDAAA;EAAA,uDAAA;EAAA,sDAAA;EAAA,sDAAA;ARwuCJ;AmC5xCI;E3BoDA,0DAAA;EAAA,wDAAA;AR4uCJ;AmC5xCI;E3BgDA,0DAAA;EAAA,wDAAA;ARgvCJ;AmC5xCI;E3B4CA,0DAAA;EAAA,wDAAA;ARovCJ;;AmCxvCE;E3BIE,qDAAA;ARwvCJ;;AmC1wCE;E3BkBE,oDAAA;EAAA,sCAAA;EAAA,oDAAA;EAAA,6CAAA;EAAA,uCAAA;ARgwCJ;;AOn0CW;ECmEP,gEAAA;EAAA,kEAAA;EAAA,6CAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,2CAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,iEAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;ARoxCJ;;AoC90CI;E5B0DA,gEAAA;EAAA,kEAAA;EAAA,6CAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,2CAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,iEAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;ARwyCJ;AoC71CI;E5BqDA,gEAAA;EAAA,kEAAA;EAAA,6CAAA;EAAA,iDAAA;EAAA,iDAAA;EAAA,2CAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,mDAAA;EAAA,yDAAA;EAAA,iEAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;EAAA,wDAAA;EAAA,wDAAA;EAAA,0DAAA;AR2zCJ;A6Bn2CE;ErBwCE,uEAAA;AR8zCJ;AoCz2CI;EAEE,0BAAA;ApC02CN;;AOp4CW;ECmEP,qCAAA;ARq0CJ;;A6B72CE;EVmSE,kCAAA;EACA,mCAAA;EX5PA,2GAAA;EAAA,sDAAA;EAAA,0DAAA;EAAA,yDAAA;EAAA,0EAAA;EAAA,6EAAA;UAAA,qEAAA;EAAA,gEAAA;ARi1CJ;;AqCv2CM;E7BsBF,wCAAA;ARq1CJ;AqCv2CM;E7BkBF,2CAAA;ARw1CJ;AqCt2CM;E7BcF,2CAAA;AR21CJ;AqCr2CM;E7BUF,2CAAA;AR81CJ;AsCv3CE;E9ByBE,gEAAA;EAAA,uDAAA;ARk2CJ;;AqC71CM;E7BLF,yCAAA;EAAA,0CAAA;ARu2CJ;AqC91CM;E7BTF,4CAAA;EAAA,0CAAA;AR22CJ;AqC91CM;E7BbF,4CAAA;EAAA,0CAAA;AR+2CJ;AqC91CM;E7BjBF,4CAAA;EAAA,0CAAA;ARm3CJ;AsC54CE;E9ByBE,iEAAA;EAAA,kEAAA;EAAA,wDAAA;EAAA,yDAAA;ARy3CJ;;AqCv1CM;E7BlCF,4CAAA;EAAA,6CAAA;AR83CJ;AqCx1CM;E7BtCF,+CAAA;EAAA,6CAAA;ARk4CJ;AqCx1CM;E7B1CF,+CAAA;EAAA,6CAAA;ARs4CJ;AqCx1CM;E7B9CF,+CAAA;EAAA,6CAAA;AR04CJ;AsCn6CE;E9ByBE,oEAAA;EAAA,qEAAA;EAAA,2DAAA;EAAA,4DAAA;EAAA,6CAAA;ARi5CJ;;AqCl1CI;E7B/DA,wDAAA;ARq5CJ;AqCj1CM;E7BpEF,4CAAA;ARw5CJ;AqCh1CM;E7BxEF,+CAAA;AR25CJ;AqC/0CM;E7B5EF,+CAAA;AR85CJ;AqC90CM;E7BhFF,+CAAA;ARi6CJ;AsC17CE;E9ByBE,2DAAA;EAAA,oEAAA;EAAA,wDAAA;EAAA,iEAAA;ARu6CJ;;AqCt0CI;ECxKF,8CAAA;EACA,iDAAA;AtCk/CF;AsC1+CE;EACE,aAAA;AtC4+CJ;AsCv+CI;EACE,aAAA;AtCy+CN;AsCr+CE;EACE,aAAA;AtCu+CJ;AsCl+CE;EA1BA,iDAAA;EACA,qDAAA;AtC+/CF;AsCl+CE;EA9BA,iDAAA;EACA,sDAAA;AtCmgDF;AsCl+CE;EAlCA,iDAAA;EACA,qDAAA;AtCugDF;;AqC51CI;EC5KF,8CAAA;EACA,iDAAA;AtC4gDF;AsCpgDE;EACE,aAAA;AtCsgDJ;AsCjgDI;EACE,aAAA;AtCmgDN;AsC//CE;EACE,aAAA;AtCigDJ;AsC5/CE;EA1BA,8CAAA;EACA,uDAAA;AtCyhDF;AsC5/CE;EA9BA,8CAAA;EACA,uDAAA;AtC6hDF;AsC5/CE;EAlCA,8CAAA;EACA,uDAAA;AtCiiDF;;AqCj2CI;;;;E7B1HA,YAAA;ARk+CJ;;AuCt5CE;EpB+KE,kCAAA;EACA,mCAAA;EX5PA,4GAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,0DAAA;EAAA,2EAAA;EAAA,2EAAA;UAAA,mEAAA;EAAA,iEAAA;AR8+CJ;;AwC3hDE;EF1BA,8CAAA;EACA,iDAAA;E9BsEE,qCAAA;EgCjEF,8CAAA;EACA,iDAAA;AxCsjDF;AsCpjDE;EACE,aAAA;AtCsjDJ;AsCjjDI;EACE,aAAA;AtCmjDN;AsC/iDE;EACE,aAAA;AtCijDJ;AsC5iDE;EA1BA,iDAAA;EACA,oDAAA;AtCykDF;AsC5iDE;EA9BA,iDAAA;EACA,qDAAA;AtC6kDF;AsC5iDE;EAlCA,iDAAA;EACA,oDAAA;AtCilDF;AwCnjDI;EhCwCA,qCAAA;EgCjEF,iDAAA;EACA,qDAAA;AxCglDF;AwCljDI;EhCkCA,qCAAA;EgCjEF,iDAAA;EACA,sDAAA;AxCqlDF;AwCjjDI;EhC4BA,qCAAA;EgCjEF,iDAAA;EACA,qDAAA;AxC0lDF;AsCnjDE;E9ByBE,iDAAA;EAAA,0DAAA;AR8hDJ;;AwCthDE;EhCRE,wCAAA;EgCoBA,8CAAA;EACA,+CAAA;EACA,aAAA;AxC+gDJ;;AyChkDE;;EH5CA,8CAAA;EACA,iDAAA;AtCinDF;AsCzmDE;;EACE,aAAA;AtC4mDJ;AsCvmDI;;;EACE,aAAA;AtC2mDN;AsCvmDE;;EACE,aAAA;AtC0mDJ;AsCrmDE;;EA1BA,8CAAA;EACA,uDAAA;AtCmoDF;AsCtmDE;;EA9BA,8CAAA;EACA,uDAAA;AtCwoDF;AsCvmDE;;EAlCA,8CAAA;EACA,uDAAA;AtC6oDF;AsChmDE;;E9ByBE,8CAAA;EAAA,yCAAA;EiCrDF,wCAAA;AzCkoDF;AyC3lDI;;EjCcA,gCAAA;EAAA,2BAAA;EiCrDF,yBAAA;AzCwoDF;AyC7lDI;;EjCUA,kCAAA;EAAA,2BAAA;EiCrDF,yBAAA;AzC8oDF;AyC/lDI;;EjCMA,kCAAA;EAAA,2BAAA;EiCrDF,yBAAA;AzCopDF;AyCjmDI;;EjCEA,kCAAA;EAAA,2BAAA;EiCrDF,yBAAA;AzC0pDF;;A0ChnDE;EvBsQE,kCAAA;EACA,mCAAA;EX5PA,4GAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,0DAAA;EAAA,2EAAA;EAAA,2EAAA;UAAA,mEAAA;EAAA,iEAAA;ARinDJ;AyCnmDE;EjCdE,sDAAA;EAAA,wCAAA;EAAA,sDAAA;EAAA,yCAAA;ARunDJ;;A2C1rDE;EnCmEE,uCAAA;EAAA,+DAAA;EAAA,qCAAA;AR6nDJ;;A2CnrDE;EnCsDE,uDAAA;EAAA,gDAAA;EAAA,yCAAA;EAAA,0CAAA;ARooDJ;;A4CxsDI;EpCoEA,mCAAA;EAAA,sDAAA;EAAA,0DAAA;EAAA,uDAAA;AR2oDJ;;A4C/sDI;EpCoEA,yCAAA;EAAA,yCAAA;EAAA,2CAAA;ARipDJ;;A4CrtDI;EpCoEA,oDAAA;EAAA,6CAAA;EAAA,sCAAA;EAAA,uCAAA;EAAA,oDAAA;EAAA,wDAAA;EAAA,iDAAA;EAAA,0CAAA;EAAA,2CAAA;EAAA,wDAAA;EAAA,2DAAA;EAAA,oDAAA;EAAA,6CAAA;EAAA,8CAAA;EAAA,2DAAA;ARmqDJ;;A6CxuDE;ErCqEE,uDAAA;ARuqDJ;A6CzuDI;ErCkEA,uDAAA;AR0qDJ;A6CvuDI;ErC6DA,uDAAA;AR6qDJ;;A8C/pDE;EACE,kBAAA;A9CkqDJ;A8C5pDI;EACE,iBAAA;A9C8pDN;;A8C1pDE;EACE,kBAAA;EACA,kBAAA;EACA,qBAAA;EACA,kBAAA;EACA,uCAAA;EACA,qBAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;EACA,oBAAA;EtCpCA,mDAAA;EAAA,kCAAA;EAZE,+BAAA;EOZF,eAAA;EPwBA,2DAAA;EAZE,eAAA;EOZF,eAAA;EPwBA,2CAAA;EAZE,gBAAA;EOZF,eAAA;EPwBA,8CAAA;AR4sDJ;ACxuDI;E6C2EE,kBAAA;EACA,gBAAA;A9CgqDN;;A8C5pDE;EtCpDE,kEAAA;EAAA,iDAAA;ARqtDJ;;A8C1pDE;EACE,aAAA;A9C6pDJ;;A8C1pDE;;EAEE,gBAAA;A9C6pDJ;;A8CxpDE;EAEE,eAAA;A9C0pDJ;;A8CpxDE;EACE,WAdS;EAeT,YAfS;EAgBT,iBAhBS;EtCmDP,cAAA;EOZF,eAAA;EPwBA,qDAAA;AR2uDJ;A8ChxDE;EACE,SAAA;A9CkxDJ;A8C/wDE;EACE,YAAA;A9CixDJ;A8C9wDE;EACE,WAAA;A9CgxDJ;A8C7wDE;EACE,UAAA;EACA,YAAA;A9C+wDJ;A8C5wDE;EACE,YAAA;A9C8wDJ;A8C3wDE;EACE,WAAA;EACA,WAAA;A9C6wDJ;A8CzwDI;EACE,UAAA;A9C2wDN;A8CxwDI;EACE,UAAA;EACA,WAAA;A9C0wDN;A8CvwDI;EACE,WAAA;A9CywDN;A8CtwDI;EACE,WAAA;EACA,UAAA;A9CwwDN;;A8C/zDE;EACE,WAfW;EAgBX,YAhBW;EAiBX,iBAjBW;A9Cm1Df;A8CxzDE;EACE,UAAA;A9C0zDJ;A8CvzDE;EACE,aAAA;A9CyzDJ;A8CtzDE;EACE,WAAA;A9CwzDJ;A8CrzDE;EACE,UAAA;EACA,YAAA;A9CuzDJ;A8CpzDE;EACE,YAAA;A9CszDJ;A8CnzDE;EACE,WAAA;EACA,WAAA;A9CqzDJ;A8CjzDI;EACE,WAAA;A9CmzDN;A8ChzDI;EACE,UAAA;EACA,YAAA;A9CkzDN;A8C/yDI;EACE,YAAA;A9CizDN;A8C9yDI;EACE,WAAA;EACA,WAAA;A9CgzDN;;A8Cv2DE;EACE,WAbS;EAcT,YAdS;EAeT,iBAfS;EtCkDP,eAAA;EOZF,eAAA;EPwBA,sDAAA;AR8zDJ;A8Cn2DE;EACE,UAAA;A9Cq2DJ;A8Cl2DE;EACE,aAAA;A9Co2DJ;A8Cj2DE;EACE,WAAA;A9Cm2DJ;A8Ch2DE;EACE,UAAA;EACA,YAAA;A9Ck2DJ;A8C/1DE;EACE,YAAA;A9Ci2DJ;A8C91DE;EACE,WAAA;EACA,WAAA;A9Cg2DJ;A8C51DI;EACE,WAAA;A9C81DN;A8C31DI;EACE,UAAA;EACA,YAAA;A9C61DN;A8C11DI;EACE,YAAA;A9C41DN;A8Cz1DI;EACE,WAAA;EACA,WAAA;A9C21DN;;AOn6DW;ECmEP,qCAAA;EAAA,6BAAA;EAAA,oDAAA;EAAA,0DAAA;ARu2DJ;;A8CrwDE;EtClGE,qCAAA;EAAA,6BAAA;AR42DJ;;A8CrwDE;EtCvGE,qCAAA;EAAA,6BAAA;ARi3DJ;;AOp7DW;ECmEP,yCAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,qCAAA;EAAA,sCAAA;ARy3DJ;;AO57DW;ECmEP,4DAAA;EAAA,oDAAA;AR83DJ;;AOj8DW;ECmEP,0DAAA;EAAA,mDAAA;EAAA,4CAAA;EAAA,0DAAA;EAAA,6CAAA;ARs4DJ;;AOz8DW;ECmEP,0DAAA;EAAA,iEAAA;EAAA,yEAAA;EAAA,mEAAA;EAAA,yEAAA;EAAA,mEAAA;EAAA,4EAAA;EAAA,4DAAA;EAAA,oDAAA;EAAA,qDAAA;EAAA,qEAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,oFAAA;EAAA,8EAAA;EAAA,mDAAA;AR05DJ;;AO79DW;ECmEP,yCAAA;AR85DJ;;AOj+DW;ECmEP,wDAAA;EAAA,0DAAA;ARm6DJ;;AOt+DW;ECmEP,+DAAA;EAAA,uEAAA;EAAA,+FAAA;EAAA,wEAAA;EAAA,mFAAA;EAAA,mFAAA;EAAA,wDAAA;EAAA,sFAAA;EAAA,iGAAA;EAAA,+EAAA;EAAA,wFAAA;EAAA,uDAAA;EAAA,oEAAA;EAAA,uEAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,gEAAA;EAAA,uEAAA;EAAA,sFAAA;EAAA,8DAAA;EAAA,yDAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,iEAAA;EAAA,gFAAA;EAAA,2EAAA;EAAA,2DAAA;EAAA,mEAAA;ARk8DJ;;A+Cx+DI;EvCsCA,+DAAA;EAAA,uEAAA;EAAA,gGAAA;EAAA,wEAAA;EAAA,oFAAA;EAAA,oFAAA;EAAA,uFAAA;EAAA,iGAAA;EAAA,+EAAA;EAAA,wFAAA;AR+8DJ;A+Cj/DI;EvCkCA,+DAAA;EAAA,uEAAA;EAAA,+FAAA;EAAA,wEAAA;EAAA,mFAAA;EAAA,mFAAA;EAAA,sFAAA;EAAA,iGAAA;EAAA,+EAAA;EAAA,wFAAA;AR29DJ;;A+Cv/DI;EvC4BA,wDAAA;AR+9DJ;A+Cr/DI;EvCsBA,wDAAA;ARk+DJ;;AwC19DE;EhCRE,wCAAA;EgCoBA,8CAAA;EACA,+CAAA;EACA,YAAA;AxCm9DJ;AsC1/DI;EACE,aAAA;AtC4/DN;;AO/iEW;ECmEP,uDAAA;EAAA,yCAAA;EAAA,oDAAA;EAAA,qDAAA;EAAA,uDAAA;EAAA,wDAAA;EAAA,gDAAA;EAAA,iDAAA;ARu/DJ;;AO1jEW;ECmEP,wCAAA;AR2/DJ;;AO9jEW;ECmEP,iDAAA;EAAA,yDAAA;EAAA,0DAAA;EAAA,mEAAA;EAAA,mEAAA;EAAA,qEAAA;EAAA,sDAAA;EAAA,6DAAA;EAAA,2DAAA;ARugEJ;;AO1kEW;ECmEP,mDAAA;EAAA,kDAAA;AR4gEJ;;AO/kEW;ECmEP,oDAAA;EAAA,sCAAA;EAAA,uCAAA;EAAA,gDAAA;EAAA,6CAAA;EAAA,uDAAA;EAAA,gDAAA;EAAA,yCAAA;EAAA,uDAAA;EAAA,0CAAA;ARyhEJ;;AO5lEW;ECmEP,mDAAA;EAAA,qDAAA;EAAA,mDAAA;EAAA,qDAAA;ARgiEJ;;AOnmEW;ECmEP,yBAAA;ARoiEJ;;AgD5lEI;ExCwDA,yBAAA;ARwiEJ;AgD5lEI;ExCoDA,yBAAA;AR2iEJ;AgD3lEI;ExCgDA,yBAAA;AR8iEJ;;AOjnEW;ECmEP,0DAAA;EAAA,+CAAA;EAAA,uDAAA;EAAA,+CAAA;EAAA,qDAAA;EAAA,6CAAA;ARujEJ;;AO1nEW;ECmEP,iDAAA;EAAA,kEAAA;EAAA,gEAAA;EAAA,8DAAA;EAAA,4DAAA;EAAA,8DAAA;EAAA,4DAAA;EAAA,oCAAA;EAAA,6CAAA;EAAA,iEAAA;EAAA,iEAAA;EAAA,0DAAA;EAAA,mEAAA;EAAA,yEAAA;EAAA,0DAAA;EAAA,+DAAA;EAAA,+DAAA;EAAA,mEAAA;AR4kEJ;AiDzoEI;EzC6DA,iDAAA;EAAA,kEAAA;EAAA,gEAAA;EAAA,8DAAA;EAAA,4DAAA;EAAA,8DAAA;EAAA,4DAAA;ARqlEJ;AiD7oEI;EzCwDA,iDAAA;EAAA,kEAAA;EAAA,gEAAA;EAAA,8DAAA;EAAA,4DAAA;EAAA,8DAAA;EAAA,4DAAA;AR8lEJ;;AOjqEW;ECmEP,iCAAA;ARkmEJ;;AOrqEW;ECmEP,qDAAA;EAAA,wDAAA;EAAA,0CAAA;EAAA,2CAAA;EAAA,sDAAA;EAAA,yDAAA;EAAA,0DAAA;AR4mEJ;;AkDhrEE;EAYI,cAAA;AlDwqEN;;AOnrEW;ECmEP,oDAAA;EAAA,uDAAA;ARqnEJ;;AmDzqEI;E3CoDA,iDAAA;EAAA,yCAAA;AR0nEJ;AmD1qEI;E3CgDA,iDAAA;EAAA,yCAAA;AR8nEJ;AmD1qEI;E3C4CA,iDAAA;EAAA,yCAAA;ARkoEJ;;AOrsEW;ECmEP,mCAAA;EAAA,iCAAA;ARuoEJ;;AO1sEW;ECmEP,iDAAA;EAAA,0CAAA;EAAA,mCAAA;EAAA,2CAAA;EAAA,oCAAA;AR+oEJ;;AoDjtEE;EACE,iBAAA;ApDotEJ;;AoDjtEE;;EAEE,0BAAA;ApDotEJ;;AoD5rEI;EACE,gBALK;ApDosEX;;AoDjtEE;EACE,+BAAA;ApDotEJ;;AoDjtEE;;EAEE,gBAAA;EACA,eAAA;ApDotEJ;;AA9uEE;EACE,aAAA;EACA,eAAA;EACA,qBAAA;EAEA,WAAA;EACA,2BAAA;EACA,qBAAA;EACA,iCAAA;AAgvEJ;AA/uEI;EACE,qCAZI;EAaJ,eAAA;AAivEN;AA/uEI;EACE,YAAA;EACA,gBAAA;EACA,eAAA;EACA,+BAAA;EACA,WAAA;EACA,kBAAA;AAivEN;AA/uEM;EACE,qBAAA;EACA,gBAAA;EACA,oBAAA;EACA,uBAAA;EACA,SAAA;AAivER;AA7uEE;EACE,WAAA;EACA,cAAA;AA+uEJ;AA7uEE;EACE,aAAA;AA+uEJ;AA9uEI;EACE,eAAA;AAgvEN;AA7uEE;EACE,cAAA;EACA,OAAA;EACA,6BAAA;EACA,oBAAA;AA+uEJ;AA7uEI;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,UAAA;EACA,wBAAA;AA+uEN;AA5uEI;EACE,OAAA;EACA,qBAAA;AA8uEN;AA3uEI;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;EACA,OAAA;EACA,QAAA;EACA,eAAA;EACA,iBAAA;EACA,qBAAA;EACA,YAAA;EACA,UAAA;EACA,wBAAA;EACA,WAAA;AA6uEN;AA5uEM;EACE,cAAA;AA8uER;AAzuEM;;EAEE,UAAA;AA2uER","sourcesContent":["@use '@angular/cdk';\n\n@mixin ripple() {\n // The host element of an mat-ripple directive should always have a position of \"absolute\" or\n // \"relative\" so that the ripples inside are correctly positioned relatively to the container.\n .mat-ripple {\n overflow: hidden;\n\n // By default, every ripple container should have position: relative in favor of creating an\n // easy API for developers using the MatRipple directive.\n position: relative;\n\n // Promote containers that have ripples to a new layer. We want to target `:not(:empty)`,\n // because we don't want all ripple containers to have their own layer since they're used in a\n // lot of places and the layer is only relevant while animating. Note that ideally we'd use\n // the `contain` property here (see #13175), because `:empty` can be broken by having extra\n // text inside the element, but it isn't very well supported yet.\n &:not(:empty) {\n transform: translateZ(0);\n }\n }\n\n .mat-ripple.mat-ripple-unbounded {\n overflow: visible;\n }\n\n .mat-ripple-element {\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\n\n // We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n transform: scale3d(0, 0, 0);\n\n // In high contrast mode the ripple is opaque, causing it to obstruct the content.\n @include cdk.high-contrast(active, off) {\n display: none;\n }\n }\n}\n","@use \"sass:map\";\r\n@use \"@angular/material\" as mat;\r\n@import \"/src/theme.scss\";\r\n$primary: map.get($my-theme, primary);\r\n$bgColor: rgba(black, 0.12);\r\n:host {\r\n .table-row-wrapper {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: flex-end;\r\n // justify-content: space-between;\r\n margin: 5px;\r\n /* border: 2px solid red; */\r\n border-radius: 0.5rem;\r\n box-shadow: 1px 1px 8px -3px #000;\r\n &:hover {\r\n background-color: $bgColor;\r\n cursor: pointer;\r\n }\r\n .table-row {\r\n width: 200px;\r\n min-width: 200px;\r\n padding: 0.5rem;\r\n background: rgba(0, 0, 0, 0.05);\r\n margin: 4px;\r\n border-radius: 4px;\r\n // border: 1px solid #999;\r\n > h3 {\r\n display: inline-block;\r\n font-weight: 500;\r\n line-height: initial;\r\n letter-spacing: inherit;\r\n margin: 0;\r\n }\r\n }\r\n }\r\n .is-data-wrapper {\r\n width: 100%;\r\n display: block;\r\n }\r\n .player-card-data {\r\n display: flex;\r\n & > div {\r\n padding: 0.5rem;\r\n }\r\n }\r\n .player-card {\r\n margin: 0.5rem;\r\n flex: 5;\r\n border: 5px solid transparent;\r\n transition: all 0.3s;\r\n\r\n .btn-close {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n }\r\n\r\n &.active {\r\n flex: 7;\r\n border-color: mat.get-color-from-palette($primary);\r\n }\r\n\r\n .player-controls {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: white;\r\n border-radius: 5rem;\r\n margin: 0 auto;\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: -2.5rem;\r\n border: 3px solid;\r\n border-color: mat.get-color-from-palette($primary);\r\n width: 14rem;\r\n opacity: 0;\r\n transition: opacity 0.3s;\r\n z-index: 10;\r\n > * {\r\n margin: 0.3rem;\r\n }\r\n }\r\n\r\n &:hover {\r\n .btn-close,\r\n .player-controls {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n}\r\n","/// Emits a CSS class, `.cdk-visually-hidden`. This class can be applied to an element\n/// to make that element visually hidden while remaining available to assistive technology.\n@mixin a11y-visually-hidden() {\n .cdk-visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n\n // This works around a Chrome bug that can cause the tab to crash when large amounts of\n // non-English text get wrapped: https://bugs.chromium.org/p/chromium/issues/detail?id=1201444\n white-space: nowrap;\n\n // Avoid browsers rendering the focus ring in some cases.\n outline: 0;\n\n // Avoid some cases where the browser will still render the native controls (see #9049).\n -webkit-appearance: none;\n -moz-appearance: none;\n\n // We need at least one of top/bottom/left/right in order to prevent cases where the\n // absolute-positioned element is pushed down and can affect scrolling (see #24597).\n // `left` was chosen here, because it's the least likely to break overrides where the\n // element might have been positioned (e.g. `mat-checkbox`).\n left: 0;\n\n [dir='rtl'] & {\n left: auto;\n right: 0;\n }\n }\n}\n\n/// @deprecated Use `a11y-visually-hidden`.\n@mixin a11y() {\n @include a11y-visually-hidden;\n}\n\n/// Emits the mixin's content nested under `$selector-context` if `$selector-context`\n/// is non-empty.\n/// @param {String} selector-context The selector under which to nest the mixin's content.\n@mixin _optionally-nest-content($selector-context) {\n @if ($selector-context == '') {\n @content;\n }\n @else {\n #{$selector-context} {\n @content;\n }\n }\n}\n\n/// Applies styles for users in high contrast mode. Note that this only applies\n/// to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\n/// attribute, however Chrome handles high contrast differently.\n///\n/// @param {String} target Type of high contrast setting to target. Defaults to `active`, can be\n/// `white-on-black` or `black-on-white`.\n/// @param {String} encapsulation Whether to emit styles for view encapsulation. Values are:\n/// * `on` - works for `Emulated`, `Native`, and `ShadowDom`\n/// * `off` - works for `None`\n/// * `any` - works for all encapsulation modes by emitting the CSS twice (default).\n@mixin high-contrast($target: active, $encapsulation: 'any') {\n @if ($target != 'active' and $target != 'black-on-white' and $target != 'white-on-black') {\n @error 'Unknown cdk-high-contrast value \"#{$target}\" provided. ' +\n 'Allowed values are \"active\", \"black-on-white\", and \"white-on-black\"';\n }\n\n @if ($encapsulation != 'on' and $encapsulation != 'off' and $encapsulation != 'any') {\n @error 'Unknown cdk-high-contrast encapsulation \"#{$encapsulation}\" provided. ' +\n 'Allowed values are \"on\", \"off\", and \"any\"';\n }\n\n // If the selector context has multiple parts, such as `.section, .region`, just doing\n // `.cdk-high-contrast-xxx #{&}` will only apply the parent selector to the first part of the\n // context. We address this by nesting the selector context under .cdk-high-contrast.\n @at-root {\n $selector-context: #{&};\n\n @if ($encapsulation != 'on') {\n // Note that if this selector is updated, the same change has to be made inside\n // `_overlay.scss` which can't depend on this mixin due to some infrastructure limitations.\n .cdk-high-contrast-#{$target} {\n @include _optionally-nest-content($selector-context) {\n @content;\n }\n }\n }\n\n @if ($encapsulation != 'off') {\n .cdk-high-contrast-#{$target} :host {\n @include _optionally-nest-content($selector-context) {\n @content;\n }\n }\n }\n }\n}\n","// We want overlays to always appear over user content, so set a baseline\n// very high z-index for the overlay container, which is where we create the new\n// stacking context for all overlays.\n$overlay-container-z-index: 1000 !default;\n$overlay-z-index: 1000 !default;\n$overlay-backdrop-z-index: 1000 !default;\n\n// Background color for all of the backdrops\n$overlay-backdrop-color: rgba(0, 0, 0, 0.32) !default;\n\n// Default backdrop animation is based on the Material Design swift-ease-out.\n$backdrop-animation-duration: 400ms !default;\n$backdrop-animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;\n\n/// Emits structural styles required for cdk/overlay to function.\n@mixin overlay() {\n .cdk-overlay-container, .cdk-global-overlay-wrapper {\n // Disable events from being captured on the overlay container.\n pointer-events: none;\n\n // The container should be the size of the viewport.\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n }\n\n // The overlay-container is an invisible element which contains all individual overlays.\n .cdk-overlay-container {\n position: fixed;\n z-index: $overlay-container-z-index;\n\n &:empty {\n // Hide the element when it doesn't have any child nodes. This doesn't\n // include overlays that have been detached, rather than disposed.\n display: none;\n }\n }\n\n // We use an extra wrapper element in order to use make the overlay itself a flex item.\n // This makes centering the overlay easy without running into the subpixel rendering\n // problems tied to using `transform` and without interfering with the other position\n // strategies.\n .cdk-global-overlay-wrapper {\n display: flex;\n position: absolute;\n z-index: $overlay-z-index;\n }\n\n // A single overlay pane.\n .cdk-overlay-pane {\n // Note: it's important for this one to start off `absolute`,\n // in order for us to be able to measure it correctly.\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n z-index: $overlay-z-index;\n\n // For connected-position overlays, we set `display: flex` in\n // order to force `max-width` and `max-height` to take effect.\n display: flex;\n max-width: 100%;\n max-height: 100%;\n }\n\n .cdk-overlay-backdrop {\n // TODO(jelbourn): reuse sidenav fullscreen mixin.\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n\n z-index: $overlay-backdrop-z-index;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n transition: opacity $backdrop-animation-duration $backdrop-animation-timing-function;\n opacity: 0;\n\n &.cdk-overlay-backdrop-showing {\n opacity: 1;\n\n // Note that we can't import and use the `high-contrast` mixin from `_a11y.scss`, because\n // this file will be copied to the top-level `cdk` package when putting together the files\n // for npm. Any relative import paths we use here will become invalid once the file is copied.\n .cdk-high-contrast-active & {\n // In high contrast mode the rgba background will become solid\n // so we need to fall back to making it opaque using `opacity`.\n opacity: 0.6;\n }\n }\n }\n\n .cdk-overlay-dark-backdrop {\n background: $overlay-backdrop-color;\n }\n\n .cdk-overlay-transparent-backdrop {\n // Define a transition on the visibility so that the `transitionend` event can fire immediately.\n transition: visibility 1ms linear, opacity 1ms linear;\n visibility: hidden;\n opacity: 1;\n\n // Note: as of Firefox 57, having the backdrop be `background: none` will prevent it from\n // capturing the user's mouse scroll events. Since we also can't use something like\n // `rgba(0, 0, 0, 0)`, we work around the inconsistency by not setting the background at\n // all and using `opacity` to make the element transparent.\n &.cdk-overlay-backdrop-showing {\n opacity: 0;\n visibility: visible;\n }\n }\n\n .cdk-overlay-backdrop-noop-animation {\n transition: none;\n }\n\n // Overlay parent element used with the connected position strategy. Used to constrain the\n // overlay element's size to fit within the viewport.\n .cdk-overlay-connected-position-bounding-box {\n position: absolute;\n z-index: $overlay-z-index;\n\n // We use `display: flex` on this element exclusively for centering connected overlays.\n // When *not* centering, a top/left/bottom/right will be set which overrides the normal\n // flex layout.\n display: flex;\n\n // We use the `column` direction here to avoid some flexbox issues in Edge\n // when using the \"grow after open\" options.\n flex-direction: column;\n\n // Add some dimensions so the element has an `innerText` which some people depend on in tests.\n min-width: 1px;\n min-height: 1px;\n }\n\n // Used when disabling global scrolling.\n .cdk-global-scrollblock {\n position: fixed;\n\n // Necessary for the content not to lose its width. Note that we're using 100%, instead of\n // 100vw, because 100vw includes the width plus the scrollbar, whereas 100% is the width\n // that the element had before we made it `fixed`.\n width: 100%;\n\n // Note: this will always add a scrollbar to whatever element it is on, which can\n // potentially result in double scrollbars. It shouldn't be an issue, because we won't\n // block scrolling on a page that doesn't have a scrollbar in the first place.\n overflow-y: scroll;\n }\n}\n","// Structural styles for the autosize text fields.\n@mixin text-field-autosize() {\n // Remove the resize handle on autosizing textareas, because whatever height\n // the user resized to will be overwritten once they start typing again.\n textarea.cdk-textarea-autosize {\n resize: none;\n }\n\n // This class is temporarily applied to the textarea when it is being measured. It is immediately\n // removed when measuring is complete. We use `!important` rules here to make sure user-specified\n // rules do not interfere with the measurement.\n textarea.cdk-textarea-autosize-measuring {\n @include _autosize-measuring-base;\n height: auto !important;\n overflow: hidden !important;\n }\n\n // Similar to the `cdk-textarea-autosize-measuring` class, but only applied on Firefox. We need\n // to use this class, because Firefox has a bug where changing the `overflow` breaks the user's\n // ability to undo/redo what they were typing (see #16629). This class is only scoped to Firefox,\n // because the measurements there don't seem to be affected by the `height: 0`, whereas on other\n // browsers they are, e.g. Chrome detects longer text and IE does't resize back to normal.\n // Identical issue report: https://bugzilla.mozilla.org/show_bug.cgi?id=448784\n textarea.cdk-textarea-autosize-measuring-firefox {\n @include _autosize-measuring-base;\n height: 0 !important;\n }\n}\n\n// Core styles that enable monitoring autofill state of text fields.\n@mixin text-field-autofill() {\n // Keyframes that apply no styles, but allow us to monitor when an text field becomes autofilled\n // by watching for the animation events that are fired when they start. Note: the /*!*/ comment is\n // needed to prevent LibSass from stripping the keyframes out.\n // Based on: https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n @keyframes cdk-text-field-autofill-start {/*!*/}\n @keyframes cdk-text-field-autofill-end {/*!*/}\n\n .cdk-text-field-autofill-monitored:-webkit-autofill {\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\n animation: cdk-text-field-autofill-start 0s 1ms;\n }\n\n .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\n animation: cdk-text-field-autofill-end 0s 1ms;\n }\n}\n\n@mixin _autosize-measuring-base {\n // Having 2px top and bottom padding seems to fix a bug where Chrome gets an incorrect\n // measurement. We just have to account for it later and subtract it off the final result.\n padding: 2px 0 !important;\n box-sizing: content-box !important;\n}\n\n// Used to generate UIDs for keyframes used to change the text field autofill styles.\n$autofill-color-frame-count: 0;\n\n// Mixin used to apply custom background and foreground colors to an autofilled text field.\n// Based on: https://stackoverflow.com/questions/2781549/\n// removing-input-background-colour-for-chrome-autocomplete#answer-37432260\n@mixin text-field-autofill-color($background, $foreground:'') {\n @keyframes cdk-text-field-autofill-color-#{$autofill-color-frame-count} {\n to {\n background: $background;\n @if $foreground != '' { color: $foreground; }\n }\n }\n\n &:-webkit-autofill {\n animation: cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\n }\n\n &.cdk-text-field-autofill-monitored:-webkit-autofill {\n // Since Chrome 80 we need a 1ms delay for cdk-text-field-autofill-start, or the animationstart\n // event won't fire.\n animation: cdk-text-field-autofill-start 0s 1ms,\n cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\n }\n\n $autofill-color-frame-count: $autofill-color-frame-count + 1 !global;\n}\n\n// @deprecated Use `autosize` and `autofill` instead.\n@mixin text-field {\n @include text-field-autosize();\n @include text-field-autofill();\n}\n","@use 'sass:map';\n@use 'sass:meta';\n@use '@angular/cdk';\n@use '../style/layout-common';\n@use '../theming/theming';\n\n// Private sass variables that will be used as reference throughout component stylesheets.\n$default-border-width: 3px;\n$default-border-style: solid;\n$default-border-color: transparent;\n$default-border-radius: 4px;\n\n// Mixin that renders the focus indicator structural styles.\n@mixin structural-styling($prefix) {\n .#{$prefix}-focus-indicator {\n position: relative;\n\n &::before {\n @include layout-common.fill();\n box-sizing: border-box;\n pointer-events: none;\n display: var(--#{$prefix}-focus-indicator-display, none); // Hide the indicator by default.\n border: var(\n --#{$prefix}-focus-indicator-border-width,\n #{$default-border-width}\n )\n var(\n --#{$prefix}-focus-indicator-border-style,\n #{$default-border-style}\n )\n var(\n --#{$prefix}-focus-indicator-border-color,\n #{$default-border-color}\n );\n border-radius: var(\n --#{$prefix}-focus-indicator-border-radius,\n #{$default-border-radius}\n );\n }\n\n // By default, render the focus indicator when the focus indicator host element takes focus.\n // Defining a pseudo element's content will cause it to render.\n &:focus::before {\n content: '';\n }\n }\n\n // Enable the indicator in high contrast mode.\n @include cdk.high-contrast(active, off) {\n @include customize-focus-indicators((display: block), $prefix);\n }\n}\n\n// Generates CSS variable declarations from a map.\n@mixin _output-variables($map) {\n @each $key, $value in $map {\n @if ($value) {\n --#{$key}: #{$value};\n }\n }\n}\n\n// Mixin that dedups CSS variables for the strong-focus-indicators mixin.\n@mixin customize-focus-indicators($config, $prefix) {\n $border-style: map.get($config, border-style);\n $border-width: map.get($config, border-width);\n $border-radius: map.get($config, border-radius);\n $border-color: map.get($config, border-color);\n $display: map.get($config, display);\n $map: (\n '#{$prefix}-focus-indicator-border-style': $border-style,\n '#{$prefix}-focus-indicator-border-width': $border-width,\n '#{$prefix}-focus-indicator-border-radius': $border-radius,\n '#{$prefix}-focus-indicator-border-color': $border-color,\n '#{$prefix}-focus-indicator-display': $display,\n );\n\n @if (&) {\n @include _output-variables($map);\n }\n @else {\n // We use `html` here instead of `:root`, because the\n // latter causes some issues with internal tooling.\n html {\n @include _output-variables($map);\n }\n }\n}\n\n@mixin strong-focus-indicators($config: ()) {\n // Default focus indicator config.\n $default-config: (\n border-color: black,\n display: block,\n );\n\n // Merge default config with user config.\n $config: map.merge($default-config, $config);\n\n @include customize-focus-indicators($config, 'mat');\n}\n\n@mixin mdc-strong-focus-indicators($config: ()) {\n // Default focus indicator config.\n $default-config: (\n border-color: black,\n display: block,\n );\n\n // Merge default config with user config.\n $config: map.merge($default-config, $config);\n\n @include customize-focus-indicators($config, 'mat-mdc');\n}\n\n@mixin strong-focus-indicators-color($config-or-theme-or-color) {\n @if meta.type-of($config-or-theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $config-or-theme-or-color\n ), 'mat');\n }\n @else {\n $config: theming.get-color-config($config-or-theme-or-color);\n $border-color: theming.get-color-from-palette(map.get($config, primary));\n @include customize-focus-indicators((\n border-color: $border-color\n ), 'mat');\n }\n}\n\n@mixin strong-focus-indicators-theme($theme-or-color-config-or-color) {\n @if meta.type-of($theme-or-color-config-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color-config-or-color\n ), 'mat');\n }\n @else {\n $theme: theming.private-legacy-get-theme($theme-or-color-config-or-color);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-focus-indicators') {\n $color: theming.get-color-config($theme);\n @if $color != null {\n @include strong-focus-indicators-color($color);\n }\n }\n }\n}\n\n@mixin mdc-strong-focus-indicators-color($config-or-theme-or-color) {\n @if meta.type-of($config-or-theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $config-or-theme-or-color\n ), 'mat-mdc');\n }\n @else {\n $config: theming.get-color-config($config-or-theme-or-color);\n $border-color: theming.get-color-from-palette(map.get($config, primary));\n @include customize-focus-indicators((\n border-color: $border-color\n ), 'mat-mdc');\n }\n}\n\n@mixin mdc-strong-focus-indicators-theme($theme-or-color-config-or-color) {\n @if meta.type-of($theme-or-color-config-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color-config-or-color\n ), 'mat-mdc');\n }\n @else {\n $theme: theming.private-legacy-get-theme($theme-or-color-config-or-color);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-mdc-focus-indicators') {\n $color: theming.get-color-config($theme);\n @if $color != null {\n @include mdc-strong-focus-indicators-color($color);\n }\n }\n }\n}\n","// This mixin ensures an element spans to fill the nearest ancestor with defined positioning.\n@mixin fill {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n}\n","@use 'sass:map';\n@use 'sass:meta';\n@use '../theming/theming';\n\n// Colors for the ripple elements.\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n $foreground: map.get($config, foreground);\n $foreground-base: map.get($foreground, base);\n $color-opacity: 0.1;\n\n .mat-ripple-element {\n // If the ripple color is resolves to a color *type*, we can use it directly, otherwise\n // (e.g. it resolves to a CSS variable) we fall back to using the color and setting an opacity.\n @if (meta.type-of($foreground-base) == color) {\n background-color: rgba($foreground-base, $color-opacity);\n }\n @else {\n background-color: $foreground-base;\n opacity: $color-opacity;\n }\n }\n}\n\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-ripple') {\n $color: theming.get-color-config($theme);\n @if $color != null {\n @include color($color);\n }\n }\n}\n","@use 'sass:map';\n@use 'sass:meta';\n\n/// Include content under the current selector (&) or the document root if there is no current\n/// selector.\n/// @param {String} $root [html] The default root selector to use when there is no current selector.\n/// @output The given content under the current selector, or root selector if there is no current\n/// selector.\n/// @content Content to output under the current selector, or root selector if there is no current\n/// selector.\n@mixin current-selector-or-root($root: html) {\n @at-root #{& or $root} {\n @content;\n }\n}\n\n/// A version of the standard `map.merge` function that takes a variable number of arguments.\n/// Each argument is merged into the final result from left to right.\n/// @param {List} $maps The maps to combine with map.merge\n/// @return {Map} The combined result of successively calling map.merge with each parameter.\n@function merge-all($maps...) {\n $result: ();\n @each $map in $maps {\n $result: map.merge($result, $map);\n }\n @return $result;\n}\n\n/// A version of the standard `map.deep-merge` function that takes a variable number of arguments.\n/// Each argument is deep-merged into the final result from left to right.\n/// @param {List} $maps The maps to combine with map.deep-merge\n/// @return {Map} The combined result of successively calling map.deep-merge with each parameter.\n@function deep-merge-all($maps...) {\n $result: ();\n @each $map in $maps {\n $result: map.deep-merge($result, $map);\n }\n @return $result;\n}\n\n/// Coerces the given value to a list, by converting any non-list value into a single-item list.\n/// This should be used when dealing with user-passed lists of args to avoid confusing errors,\n/// since Sass treats `($x)` as equivalent to `$x`.\n/// @param {Any} $value The value to coerce to a list.\n/// @return {List} The original $value if it was a list, otherwise a single-item list containing\n/// $value.\n@function coerce-to-list($value) {\n @return if(meta.type-of($value) != 'list', ($value,), $value);\n}\n","//\n// Copyright 2020 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n@use './gss';\n\n/// When true, add an additional property/value declaration before declarations\n/// that use advanced features such as custom properties or CSS functions. This\n/// adds fallback support for older browsers such as IE11 that do not support\n/// these features at the cost of additional CSS. Set this variable to false to\n/// disable generating fallback declarations.\n$enable-fallback-declarations: true !default;\n\n/// Writes a CSS property/value declaration. This mixin is used throughout the\n/// theme package for consistency for dynamically setting CSS property values.\n///\n/// This mixin may optionally take a fallback value. For advanced features such\n/// as custom properties or CSS functions like min and max, a fallback value is\n/// recommended to support older browsers.\n///\n/// @param {String} $property - The CSS property of the declaration.\n/// @param {*} $value - The value of the CSS declaration. The value should be\n/// resolved by other theme functions first (i.e. custom property Maps and\n/// Material theme keys are not supported in this mixin). If the value is\n/// null, no declarations will be emitted.\n/// @param {*} $fallback - An optional fallback value for older browsers. If\n/// provided, a second property/value declaration will be added before the\n/// main property/value declaration.\n/// @param {Map} $gss - An optional Map of GSS annotations to add.\n/// @param {Bool} $important - If true, add `!important` to the declaration.\n@mixin declaration(\n $property,\n $value,\n $fallback-value: null,\n $gss: (),\n $important: false\n) {\n // Normally setting a null value to a property will not emit CSS, so mixins\n // wouldn't need to check this. However, Sass will throw an error if the\n // interpolated property is a custom property.\n @if $value != null {\n $important-rule: if($important, ' !important', '');\n\n @if $fallback-value and $enable-fallback-declarations {\n @include gss.annotate($gss);\n #{$property}: #{$fallback-value} #{$important-rule};\n\n // Add @alternate to annotations.\n $gss: map.merge(\n $gss,\n (\n alternate: true,\n )\n );\n }\n\n @include gss.annotate($gss);\n #{$property}: #{$value}#{$important-rule};\n }\n}\n\n/// Unpacks shorthand values for CSS properties (i.e. lists of 1-3 values).\n/// If a list of 4 values is given, it is returned as-is.\n///\n/// Examples:\n///\n/// unpack-value(4px) => 4px 4px 4px 4px\n/// unpack-value(4px 2px) => 4px 2px 4px 2px\n/// unpack-value(4px 2px 2px) => 4px 2px 2px 2px\n/// unpack-value(4px 2px 0 2px) => 4px 2px 0 2px\n///\n/// @param {Number | Map | List} $value - List of 1 to 4 value numbers.\n/// @return {List} a List of 4 value numbers.\n@function unpack-value($value) {\n @if meta.type-of($value) == 'map' or list.length($value) == 1 {\n @return $value $value $value $value;\n } @else if list.length($value) == 4 {\n @return $value;\n } @else if list.length($value) == 3 {\n @return list.nth($value, 1) list.nth($value, 2) list.nth($value, 3)\n list.nth($value, 2);\n } @else if list.length($value) == 2 {\n @return list.nth($value, 1) list.nth($value, 2) list.nth($value, 1)\n list.nth($value, 2);\n }\n\n @error \"Invalid CSS property value: '#{$value}' is more than 4 values\";\n}\n","@use 'sass:map';\n@use '../tokens/m2/mat/option' as tokens-mat-option;\n@use '../tokens/token-utils';\n@use '../style/sass-utils';\n\n@use '../theming/theming';\n@use '../typography/typography';\n@use '../mdc-helpers/mdc-helpers';\n\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n\n @include mdc-helpers.using-mdc-theme($config) {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($config));\n }\n\n .mat-accent {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.private-get-color-palette-color-tokens(map.get($config, accent)));\n }\n\n .mat-warn {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.private-get-color-palette-color-tokens(map.get($config, warn)));\n }\n }\n}\n\n@mixin typography($config-or-theme) {\n $config: typography.private-typography-to-2018-config(\n theming.get-typography-config($config-or-theme));\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-typography-tokens($config));\n }\n}\n\n@mixin density($config-or-theme) {\n $density-scale: theming.get-density-config($config-or-theme);\n}\n\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-option') {\n $color: theming.get-color-config($theme);\n $density: theming.get-density-config($theme);\n $typography: theming.get-typography-config($theme);\n\n @if $color != null {\n @include color($color);\n }\n @if $density != null {\n @include density($density);\n }\n @if $typography != null {\n @include typography($typography);\n }\n }\n}\n","@use 'sass:map';\n@use '../../theming/theming';\n\n@mixin _psuedo-checkbox-styles-with-color($text-color, $background) {\n .mat-pseudo-checkbox-checked,\n .mat-pseudo-checkbox-indeterminate {\n &.mat-pseudo-checkbox-minimal::after {\n color: $text-color;\n }\n\n // Full (checkbox) appearance inverts colors of text and background.\n &.mat-pseudo-checkbox-full {\n &::after {\n color: $background;\n }\n\n background: $text-color;\n }\n }\n}\n\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n $is-dark-theme: map.get($config, is-dark);\n\n $primary: theming.get-color-from-palette(map.get($config, primary));\n $accent: theming.get-color-from-palette(map.get($config, accent));\n $warn: theming.get-color-from-palette(map.get($config, warn));\n $background: theming.get-color-from-palette(map.get($config, background), background);\n $secondary-text: theming.get-color-from-palette(map.get($config, foreground), secondary-text);\n\n // NOTE(traviskaufman): While the spec calls for translucent blacks/whites for disabled colors,\n // this does not work well with elements layered on top of one another. To get around this we\n // blend the colors together based on the base color and the theme background.\n $white-30pct-opacity-on-dark: #686868;\n $black-26pct-opacity-on-light: #b0b0b0;\n $disabled-color: if($is-dark-theme, $white-30pct-opacity-on-dark, $black-26pct-opacity-on-light);\n $colored-box-selector: '.mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate';\n\n .mat-pseudo-checkbox-full {\n color: $secondary-text;\n &.mat-pseudo-checkbox-disabled {\n color: $disabled-color;\n }\n }\n\n .mat-primary {\n @include _psuedo-checkbox-styles-with-color($primary, $background);\n }\n\n // Default to the accent color. Note that the pseudo checkboxes are meant to inherit the\n // theme from their parent, rather than implementing their own theming, which is why we\n // don't attach to the `mat-*` classes. Also note that this needs to be below `.mat-primary`\n // in order to allow for the color to be overwritten if the checkbox is inside a parent that\n // has `mat-accent` and is placed inside another parent that has `mat-primary`.\n @include _psuedo-checkbox-styles-with-color($accent, $background);\n .mat-accent {\n @include _psuedo-checkbox-styles-with-color($accent, $background);\n }\n\n .mat-warn {\n @include _psuedo-checkbox-styles-with-color($warn, $background);\n }\n\n .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked,\n .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate {\n &.mat-pseudo-checkbox-minimal::after {\n color: $disabled-color;\n }\n\n &.mat-pseudo-checkbox-full {\n background: $disabled-color;\n }\n }\n}\n\n@mixin typography($config-or-theme) {}\n\n@mixin _density($config-or-theme) {}\n\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-pseudo-checkbox') {\n $color: theming.get-color-config($theme);\n $density: theming.get-density-config($theme);\n $typography: theming.get-typography-config($theme);\n\n @if $color != null {\n @include color($color);\n }\n @if $density != null {\n @include _density($density);\n }\n @if $typography != null {\n @include typography($typography);\n }\n }\n}\n","@use 'sass:map';\n@use 'theming/theming';\n@use './style/private';\n@use './ripple/ripple-theme';\n@use './option/option-theme';\n@use './option/optgroup-theme';\n@use './selection/pseudo-checkbox/pseudo-checkbox-theme';\n@use './style/elevation';\n@use './typography/typography';\n\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n\n @include ripple-theme.color($config);\n @include option-theme.color($config);\n @include optgroup-theme.color($config);\n @include pseudo-checkbox-theme.color($config);\n\n // Wrapper element that provides the theme background when the user's content isn't\n // inside of a `mat-sidenav-container`. Note that we need to exclude the ampersand\n // selector in case the mixin is included at the top level.\n .mat-app-background#{if(&, ', &.mat-app-background', '')} {\n $background: map.get($config, background);\n $foreground: map.get($config, foreground);\n\n background-color: theming.get-color-from-palette($background, background);\n color: theming.get-color-from-palette($foreground, text);\n }\n\n // Provides external CSS classes for each elevation value. Each CSS class is formatted as\n // `mat-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the element is\n // elevated.\n @for $zValue from 0 through 24 {\n $selector: elevation.$prefix + $zValue;\n // We need the `mat-mdc-elevation-specific`, because some MDC mixins\n // come with elevation baked in and we don't have a way of removing it.\n .#{$selector}, .mat-mdc-elevation-specific.#{$selector} {\n @include private.private-theme-elevation($zValue, $config);\n }\n }\n\n // Marker that is used to determine whether the user has added a theme to their page.\n @at-root {\n .mat-theme-loaded-marker {\n display: none;\n }\n }\n}\n\n@mixin typography($config-or-theme) {\n $config: typography.private-typography-to-2018-config(\n theming.get-typography-config($config-or-theme));\n\n @include option-theme.typography($config);\n @include optgroup-theme.typography($config);\n @include pseudo-checkbox-theme.typography($config);\n // TODO(mmalerba): add typography mixin for this.\n // @include ripple-theme.typography($config);\n}\n\n@mixin density($config-or-theme) {\n $density-scale: theming.get-density-config($config-or-theme);\n\n @include option-theme.density($density-scale);\n @include optgroup-theme.density($density-scale);\n // TODO(mmalerba): add density mixins for these.\n // @include ripple-theme.density($density-scale);\n // @include pseudo-checkbox-theme.density($density-scale);\n}\n\n// Mixin that renders all of the core styles that depend on the theme.\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n // Wrap the sub-theme includes in the duplicate theme styles mixin. This ensures that\n // there won't be multiple warnings. e.g. if `mat-core-theme` reports a warning, then\n // the imported themes (such as `mat-ripple-theme`) should not report again.\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-core') {\n $color: theming.get-color-config($theme);\n $density: theming.get-density-config($theme);\n $typography: theming.get-typography-config($theme);\n\n @if $color != null {\n @include color($color);\n }\n @if $density != null {\n @include density($density);\n }\n @if $typography != null {\n @include typography($typography);\n }\n }\n}\n","@use 'sass:map';\n@use '../core/theming/theming';\n@use '../core/typography/typography';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mat/card' as tokens-mat-card;\n@use '../core/tokens/m2/mdc/elevated-card' as tokens-mdc-elevated-card;\n@use '../core/tokens/m2/mdc/outlined-card' as tokens-mdc-outlined-card;\n@use '@material/card/elevated-card-theme' as mdc-elevated-card-theme;\n@use '@material/card/outlined-card-theme' as mdc-outlined-card-theme;\n\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n $mdc-elevated-card-color-tokens: token-utils.resolve-elevation(\n tokens-mdc-elevated-card.get-color-tokens($config),\n container-elevation,\n container-shadow-color\n );\n $mdc-outlined-card-color-tokens: token-utils.resolve-elevation(\n tokens-mdc-outlined-card.get-color-tokens($config),\n container-elevation,\n container-shadow-color,\n );\n $mat-card-color-tokens: tokens-mat-card.get-color-tokens($config);\n\n // Add values for card tokens.\n .mat-mdc-card {\n @include mdc-elevated-card-theme.theme($mdc-elevated-card-color-tokens);\n @include mdc-outlined-card-theme.theme($mdc-outlined-card-color-tokens);\n @include token-utils.create-token-values(tokens-mat-card.$prefix, $mat-card-color-tokens);\n }\n}\n\n@mixin typography($config-or-theme) {\n $config: typography.private-typography-to-2018-config(\n theming.get-typography-config($config-or-theme));\n $mdc-elevated-card-typography-tokens: tokens-mdc-elevated-card.get-typography-tokens($config);\n $mdc-outlined-card-typography-tokens: tokens-mdc-outlined-card.get-typography-tokens($config);\n $mat-card-typography-tokens: tokens-mat-card.get-typography-tokens($config);\n\n // Add values for card tokens.\n .mat-mdc-card {\n @include mdc-elevated-card-theme.theme($mdc-elevated-card-typography-tokens);\n @include mdc-outlined-card-theme.theme($mdc-outlined-card-typography-tokens);\n @include token-utils.create-token-values(tokens-mat-card.$prefix, $mat-card-typography-tokens);\n }\n}\n\n@mixin density($config-or-theme) {\n $density-scale: theming.get-density-config($config-or-theme);\n $mdc-elevated-card-density-tokens: tokens-mdc-elevated-card.get-density-tokens($density-scale);\n $mdc-outlined-card-density-tokens: tokens-mdc-outlined-card.get-density-tokens($density-scale);\n $mat-card-density-tokens: tokens-mat-card.get-density-tokens($density-scale);\n\n // Add values for card tokens.\n .mat-mdc-card {\n @include mdc-elevated-card-theme.theme($mdc-elevated-card-density-tokens);\n @include mdc-outlined-card-theme.theme($mdc-outlined-card-density-tokens);\n @include token-utils.create-token-values(tokens-mat-card.$prefix, $mat-card-density-tokens);\n }\n}\n\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-card') {\n $color: theming.get-color-config($theme);\n $density: theming.get-density-config($theme);\n $typography: theming.get-typography-config($theme);\n\n @if $color != null {\n @include color($color);\n }\n @if $density != null {\n @include density($density);\n }\n @if $typography != null {\n @include typography($typography);\n }\n }\n}\n\n@mixin theme-from-tokens($tokens) {\n @if ($tokens != ()) {\n $elevated-card-tokens: map.get($tokens, tokens-mdc-elevated-card.$prefix);\n // Work around a bug in MDC where the elevation is not resolved to an actual shadow value.\n $elevated-card-tokens: token-utils.resolve-elevation(\n $elevated-card-tokens,\n container-elevation,\n container-shadow-color\n );\n $outlined-card-tokens: map.get($tokens, tokens-mdc-outlined-card.$prefix);\n // Work around a bug in MDC where the elevation is not resolved to an actual shadow value.\n $outlined-card-tokens: token-utils.resolve-elevation(\n $outlined-card-tokens,\n container-elevation,\n container-shadow-color\n );\n @include mdc-elevated-card-theme.theme($elevated-card-tokens);\n @include mdc-outlined-card-theme.theme($outlined-card-tokens);\n @include token-utils.create-token-values(\n tokens-mat-card.$prefix, map.get($tokens, tokens-mat-card.$prefix));\n }\n}\n","@use '../core/theming/theming';\n@use '../core/tokens/m2/mdc/linear-progress' as tokens-mdc-linear-progress;\n@use '@material/linear-progress/linear-progress-theme' as mdc-linear-progress-theme;\n@use 'sass:map';\n\n@mixin _palette-styles($config, $palette-name) {\n $palette-config: map.merge($config, (primary: map.get($config, $palette-name)));\n $color-tokens: tokens-mdc-linear-progress.get-color-tokens($palette-config);\n\n // We can't set the `track-color` using `theme`, because it isn't possible for it to use a CSS\n // variable since MDC's buffer animation works by constructing an SVG string from this color.\n // We also can't set the `track-color` by creating our own token slot because the track-color\n // is set in the SVG string in `theme-styles`.\n @include mdc-linear-progress-theme.theme-styles((\n // TODO(crisbeto): the buffer color should come from somewhere in MDC, however at the time of\n // writing, their buffer color is hardcoded to #e6e6e6 which both doesn't account for theming\n // and doesn't match the Material design spec. For now we approximate the buffer background by\n // applying an opacity to the color of the bar.\n track-color: map.get($color-tokens, track-color),\n ));\n\n @include mdc-linear-progress-theme.theme($color-tokens);\n}\n\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n\n .mat-mdc-progress-bar {\n @include _palette-styles($config, primary);\n\n &.mat-accent {\n @include _palette-styles($config, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($config, warn);\n }\n }\n}\n\n@mixin typography($config-or-theme) {}\n\n@mixin density($config-or-theme) {}\n\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-bar') {\n $color: theming.get-color-config($theme);\n $density: theming.get-density-config($theme);\n $typography: theming.get-typography-config($theme);\n\n @if $color != null {\n @include color($color);\n }\n @if $density != null {\n @include density($density);\n }\n @if $typography != null {\n @include typography($typography);\n }\n }\n}\n","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// stylelint-disable selector-class-pattern --\n// Selector '.mdc-*' should only be used in this project.\n\n@use 'sass:map';\n@use 'sass:math';\n@use 'sass:string';\n@use '@material/dom/dom';\n@use '@material/feature-targeting/feature-targeting';\n@use '@material/rtl/rtl';\n@use '@material/theme/custom-properties';\n@use '@material/theme/theme';\n@use '@material/theme/theme-color';\n@use '@material/theme/keys';\n\n$baseline-buffer-color: #e6e6e6 !default;\n$height: 4px;\n\n$custom-property-prefix: 'linear-progress';\n\n// TODO(b/254889918): Support all linear progress tokens.\n$light-theme: (\n active-indicator-color: theme-color.$primary,\n active-indicator-height: 4px,\n track-color: $baseline-buffer-color,\n track-height: 4px,\n track-shape: 0px,\n);\n\n@mixin theme($theme) {\n @include theme.validate-theme($light-theme, $theme);\n @include keys.declare-custom-properties(\n $theme,\n $prefix: $custom-property-prefix\n );\n}\n\n@mixin theme-styles($theme, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include theme.validate-theme-styles($light-theme, $theme);\n\n $theme: keys.create-theme-properties(\n $theme,\n $prefix: $custom-property-prefix\n );\n\n @include buffering-keyframes(map.get($theme, track-height), $query);\n @include bar-color(map.get($theme, active-indicator-color), $query);\n @include buffer-color(map.get($theme, track-color), $query);\n\n .mdc-linear-progress {\n @include feature-targeting.targets($feat-structure) {\n @include theme.property(\n height,\n 'max(track-height, bar-height)',\n $replace: (\n track-height: map.get($theme, track-height),\n bar-height: map.get($theme, active-indicator-height)\n )\n );\n\n @include dom.ie11-support() {\n $track-height: map.get($theme, track-height);\n $track-height: if(\n custom-properties.is-custom-prop($track-height),\n custom-properties.get-fallback($track-height),\n $track-height\n );\n\n $bar-height: map.get($theme, active-indicator-height);\n $bar-height: if(\n custom-properties.is-custom-prop($bar-height),\n custom-properties.get-fallback($bar-height),\n $bar-height\n );\n\n @if ($track-height != null) and\n ($bar-height != null) and\n (not custom-properties.is-custom-prop-string($track-height)) and\n (not custom-properties.is-custom-prop-string($bar-height))\n {\n @include theme.property(height, math.max($track-height, $bar-height));\n }\n }\n }\n }\n\n @include _bar-height(map.get($theme, active-indicator-height), $query);\n @include _track-height(map.get($theme, track-height), $query);\n @include _track-shape(map.get($theme, track-shape), $query);\n\n // TODO(b/155129310): Add styles for 4-color linear progress once this variant\n // is supported.\n}\n\n@mixin bar-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-linear-progress__bar-inner {\n @include feature-targeting.targets($feat-color) {\n // Border is used rather than background-color to ensure that the\n // bar is visible in Windows High Contrast Mode.\n @include theme.property(border-color, $color);\n }\n }\n}\n\n@mixin buffer-color($color, $query: feature-targeting.all()) {\n // We need to escape the '#' character as \"%23\" for SVG because '#' is a reserved character in URIs.\n $concrete-color: $color;\n @if custom-properties.is-custom-prop($color) {\n $concrete-color: custom-properties.get-fallback($color);\n }\n $concrete-color-for-svg: str-replace_(\n string.unquote('#{$concrete-color}'),\n '#',\n '%23'\n );\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-linear-progress__buffer-dots {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(background-color, $color);\n\n @media (forced-colors: active) {\n background-color: ButtonBorder;\n }\n\n @include dom.ie11-support() {\n background-color: transparent;\n // stylelint-disable function-url-quotes -- SVG data URI\n // SVG is optimized for data URI (https://codepen.io/tigt/post/optimizing-svgs-in-data-uris)\n @include theme.property(\n background-image,\n url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='concrete-color-for-svg'/%3E%3C/svg%3E\"),\n $replace: (concrete-color-for-svg: $concrete-color-for-svg)\n );\n // stylelint-enable function-url-quotes\n }\n }\n }\n\n .mdc-linear-progress__buffer-bar {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(background-color, $color);\n }\n }\n}\n\n/// @deprecated Use Theming API instead.\n@mixin bar-and-track-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n .mdc-linear-progress {\n @include feature-targeting.targets($feat-structure) {\n @include theme.property(height, $height);\n }\n }\n\n @include _bar-height($height, $query);\n @include _track-height($height, $query);\n}\n\n@mixin buffering-keyframes($track-height, $query: feature-targeting.all()) {\n $feat-animation: feature-targeting.create-target($query, animation);\n\n @include feature-targeting.targets($feat-animation) {\n @keyframes mdc-linear-progress-buffering {\n from {\n // Normally the buffer dots start from the left and overflow to the right.\n // We rotate by 180deg so that the buffer dots start on the right when\n // in non-reversed mode and overflow to the left.\n @include rtl.ignore-next-line();\n @include theme.property(\n transform,\n 'rotate(180deg) translateX(calc(track-height * -2.5))',\n $replace: (track-height: $track-height)\n );\n }\n }\n }\n}\n\n// Based on https://css-tricks.com/snippets/sass/str-replace-function/\n@function str-replace_($string, $search, $replace) {\n $index: string.index($string, $search);\n\n @if $index {\n $head: string.slice($string, 1, $index - 1);\n $tail: str-replace_(\n string.slice($string, $index + string.length($search)),\n $search,\n $replace\n );\n\n @return $head + $replace + $tail;\n }\n\n @return $string;\n}\n\n@mixin _bar-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n .mdc-linear-progress__bar {\n @include theme.property(height, $height);\n }\n\n .mdc-linear-progress__bar-inner {\n @include theme.property(border-top-width, $height);\n }\n }\n}\n\n@mixin _track-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n .mdc-linear-progress__buffer {\n @include theme.property(height, $height);\n }\n\n .mdc-linear-progress__buffer-dots {\n @include dom.ie11-support() {\n @include theme.property(\n background-size,\n 10px height,\n $replace: (height: $height)\n );\n }\n }\n }\n}\n\n@mixin _track-shape($shape, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n .mdc-linear-progress__buffer {\n @include theme.property(border-radius, $shape);\n }\n }\n}\n","//\n// Copyright 2020 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n\n/// Adds optional GSS annotation comments. Useful for theme mixins where one or\n/// more properties are set indirectly.\n///\n/// Annotations may be provided as a Map of annotations or as named arguments.\n///\n/// @example - scss\n/// @include annotate((noflip: true));\n/// left: 0;\n///\n/// @example - scss\n/// @include annotate($noflip: true);\n/// left: 0;\n///\n/// @example - css\n/// /* @noflip */ /*rtl:ignore*/\n/// left: 0;\n///\n/// @param {Map} $annotations - Map of annotations. Values must be set to `true`\n/// for an annotation to be added.\n@mixin annotate($annotations...) {\n $keywords: meta.keywords($annotations);\n @if list.length($annotations) > 0 {\n $annotations: list.nth($annotations, 1);\n } @else {\n $annotations: $keywords;\n }\n\n @if (map.get($annotations, alternate) == true) {\n /* @alternate */\n }\n\n // noflip must be the last tag right before the property\n @if (map.get($annotations, noflip) == true) {\n /* @noflip */ /*rtl:ignore*/\n }\n}\n","// Copyright 2020 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n@use '@material/feature-targeting/feature-targeting';\n@use '@material/rtl/rtl';\n\n///\n/// Emits necessary layout styles to set a transparent border around an element\n/// without interfering with the rest of its component layout. The border is\n/// only visible in high-contrast mode. The target element should be a child of\n/// a relatively positioned top-level element (i.e. a ::before pseudo-element).\n///\n/// @param {number} $border-width - The width of the transparent border.\n/// @param {string} $border-style - The style of the transparent border.\n///\n@mixin transparent-border(\n $border-width: 1px,\n $border-style: solid,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n position: absolute;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n top: 0;\n @include rtl.ignore-next-line();\n left: 0;\n border: $border-width $border-style transparent;\n border-radius: inherit;\n content: '';\n pointer-events: none;\n }\n\n // Used to satisfy Firefox v94 which does not render transparent borders in HCM (b/206440838).\n @include forced-colors-mode($exclude-ie11: true) {\n @include feature-targeting.targets($feat-structure) {\n border-color: CanvasText;\n }\n }\n}\n\n///\n/// Visually hides text content for accessibility. This text should only be\n/// visible to screen reader users.\n/// See https://a11yproject.com/posts/how-to-hide-content/\n///\n@mixin visually-hidden($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap; /* added line */\n width: 1px;\n }\n}\n\n/// Selects for IE11 support.\n///\n/// @content styles to emit for IE11 support\n@mixin ie11-support {\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n @content;\n }\n}\n\n/// Selects for `forced-colors` high contrast mode.\n///\n/// While in `forced-colors` mode, only system colors should be used.\n///\n/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#system_colors\n/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/@media/forced-colors\n/// @content styles to emit in `forced-colors` mode\n@mixin forced-colors-mode($exclude-ie11: false) {\n @if $exclude-ie11 {\n @media screen and (forced-colors: active) {\n @content;\n }\n } @else {\n @media screen and (forced-colors: active), (-ms-high-contrast: active) {\n @content;\n }\n }\n}\n","@use '@material/tooltip/plain-tooltip-theme' as mdc-plain-tooltip-theme;\n@use '../core/theming/theming';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/plain-tooltip' as m2-mdc-plain-tooltip;\n\n@mixin color($config-or-theme) {\n $config: theming.get-color-config($config-or-theme);\n $mdc-tooltip-color-tokens: m2-mdc-plain-tooltip.get-color-tokens($config);\n\n // Add values for MDC tooltip tokens.\n .mat-mdc-tooltip {\n @include mdc-plain-tooltip-theme.theme($mdc-tooltip-color-tokens);\n }\n}\n\n@mixin typography($config-or-theme) {\n $config: typography.private-typography-to-2018-config(\n theming.get-typography-config($config-or-theme));\n $mdc-tooltip-typography-tokens: m2-mdc-plain-tooltip.get-typography-tokens($config);\n\n // Add values for MDC tooltip tokens.\n .mat-mdc-tooltip {\n @include mdc-plain-tooltip-theme.theme($mdc-tooltip-typography-tokens);\n }\n}\n\n@mixin density($config-or-theme) {\n $density-scale: theming.get-density-config($config-or-theme);\n $mdc-tooltip-density-tokens: m2-mdc-plain-tooltip.get-density-tokens($density-scale);\n\n // Add values for MDC tooltip tokens.\n .mat-mdc-tooltip {\n @include mdc-plain-tooltip-theme.theme($mdc-tooltip-density-tokens);\n }\n}\n\n@mixin theme($theme-or-color-config) {\n $theme: theming.private-legacy-get-theme($theme-or-color-config);\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-tooltip') {\n $color: theming.get-color-config($theme);\n $density: theming.get-density-config($theme);\n $typography: theming.get-typography-config($theme);\n\n @if $color != null {\n @include color($color);\n }\n @if $density != null {\n @include density($density);\n }\n @if $typography != null {\n @include typography($typography);\n }\n }\n}\n","@use '@material/textfield' as mdc-textfield;\n@use '@material/theme/theme' as mdc-theme;\n@use '@material/typography' as mdc-typography;\n@use '@material/textfield/variables' as mdc-textfield-variables;\n\n@use '../core/tokens/m2/mat/form-field' as tokens-mat-form-field;\n@use '../core/tokens/token-utils';\n@use './form-field-sizing';\n\n@mixin private-form-field-subscript() {\n // Wrapper for the hints and error messages.\n .mat-mdc-form-field-subscript-wrapper {\n box-sizing: border-box;\n width: 100%;\n position: relative;\n }\n\n .mat-mdc-form-field-hint-wrapper,\n .mat-mdc-form-field-error-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding: 0 mdc-textfield-variables.$padding-horizontal;\n }\n\n .mat-mdc-form-field-subscript-dynamic-size {\n .mat-mdc-form-field-hint-wrapper,\n .mat-mdc-form-field-error-wrapper {\n position: static;\n }\n }\n\n .mat-mdc-form-field-bottom-align::before {\n content: '';\n display: inline-block;\n height: 16px;\n }\n\n .mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before {\n content: unset;\n }\n\n .mat-mdc-form-field-hint-end {\n order: 1;\n }\n\n // Clears the floats on the hints. This is necessary for the hint animation to work.\n .mat-mdc-form-field-hint-wrapper {\n display: flex;\n }\n\n // Spacer used to make sure start and end hints have enough space between them.\n .mat-mdc-form-field-hint-spacer {\n flex: 1 0 form-field-sizing.$mat-form-field-hint-min-space;\n }\n\n // Single error message displayed beneath the form field underline.\n .mat-mdc-form-field-error {\n display: block;\n }\n}\n\n@mixin private-form-field-subscript-color() {\n // MDC does not have built-in error treatment.\n .mat-mdc-form-field-error {\n @include mdc-theme.prop(color, mdc-textfield.$error);\n }\n\n // The subscript wrapper has a minimum height to avoid that the form-field\n // jumps when hints or errors are displayed.\n .mat-mdc-form-field-subscript-wrapper,\n .mat-mdc-form-field-bottom-align::before {\n @include token-utils.use-tokens(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-token-slots()) {\n @include mdc-typography.smooth-font();\n @include token-utils.create-token-slot(font-family, subscript-text-font);\n @include token-utils.create-token-slot(line-height, subscript-text-line-height);\n @include token-utils.create-token-slot(font-size, subscript-text-size);\n @include token-utils.create-token-slot(letter-spacing, subscript-text-tracking);\n @include token-utils.create-token-slot(font-weight, subscript-text-weight);\n }\n }\n}\n","//\n// Copyright 2017 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// stylelint-disable selector-class-pattern --\n// Selector '.mdc-*' should only be used in this project.\n\n@use 'sass:math';\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n@use 'sass:string';\n@use '@material/feature-targeting/feature-targeting';\n@use '@material/theme/custom-properties';\n@use '@material/theme/keys';\n@use '@material/theme/theme';\n\n/// @deprecated Avoid calling this function directly. Instead, configure the\n/// `$styles- - - - could become: - - -
- -
- - Note the use of @polyfill in the comment above a ShadowDOM specific style - declaration. This is a directive to the styling shim to use the selector - in comments in lieu of the next selector when running under polyfill. -*/ -class ShadowCss { - constructor() { - /** - * Regular expression used to extrapolate the possible keyframes from an - * animation declaration (with possibly multiple animation definitions) - * - * The regular expression can be divided in three parts - * - (^|\s+) - * simply captures how many (if any) leading whitespaces are present - * - (?:(?:(['"])((?:\\\\|\\\2|(?!\2).)+)\2)|(-?[A-Za-z][\w\-]*)) - * captures two different possible keyframes, ones which are quoted or ones which are valid css - * idents (custom properties excluded) - * - (?=[,\s;]|$) - * simply matches the end of the possible keyframe, valid endings are: a comma, a space, a - * semicolon or the end of the string - */ - this._animationDeclarationKeyframesRe = /(^|\s+)(?:(?:(['"])((?:\\\\|\\\2|(?!\2).)+)\2)|(-?[A-Za-z][\w\-]*))(?=[,\s]|$)/g; - } - /* - * Shim some cssText with the given selector. Returns cssText that can be included in the document - * - * The selector is the attribute added to all elements inside the host, - * The hostSelector is the attribute added to the host itself. - */ - shimCssText(cssText, selector, hostSelector = '') { - // **NOTE**: Do not strip comments as this will cause component sourcemaps to break - // due to shift in lines. - // Collect comments and replace them with a placeholder, this is done to avoid complicating - // the rule parsing RegExp and keep it safer. - const comments = []; - cssText = cssText.replace(_commentRe, m => { - if (m.match(_commentWithHashRe)) { - comments.push(m); - } else { - // Replace non hash comments with empty lines. - // This is done so that we do not leak any senstive data in comments. - const newLinesMatches = m.match(_newLinesRe); - comments.push((newLinesMatches?.join('') ?? '') + '\n'); - } - return COMMENT_PLACEHOLDER; - }); - cssText = this._insertDirectives(cssText); - const scopedCssText = this._scopeCssText(cssText, selector, hostSelector); - // Add back comments at the original position. - let commentIdx = 0; - return scopedCssText.replace(_commentWithHashPlaceHolderRe, () => comments[commentIdx++]); - } - _insertDirectives(cssText) { - cssText = this._insertPolyfillDirectivesInCssText(cssText); - return this._insertPolyfillRulesInCssText(cssText); - } - /** - * Process styles to add scope to keyframes. - * - * Modify both the names of the keyframes defined in the component styles and also the css - * animation rules using them. - * - * Animation rules using keyframes defined elsewhere are not modified to allow for globally - * defined keyframes. - * - * For example, we convert this css: - * - * ``` - * .box { - * animation: box-animation 1s forwards; - * } - * - * @keyframes box-animation { - * to { - * background-color: green; - * } - * } - * ``` - * - * to this: - * - * ``` - * .box { - * animation: scopeName_box-animation 1s forwards; - * } - * - * @keyframes scopeName_box-animation { - * to { - * background-color: green; - * } - * } - * ``` - * - * @param cssText the component's css text that needs to be scoped. - * @param scopeSelector the component's scope selector. - * - * @returns the scoped css text. - */ - _scopeKeyframesRelatedCss(cssText, scopeSelector) { - const unscopedKeyframesSet = new Set(); - const scopedKeyframesCssText = processRules(cssText, rule => this._scopeLocalKeyframeDeclarations(rule, scopeSelector, unscopedKeyframesSet)); - return processRules(scopedKeyframesCssText, rule => this._scopeAnimationRule(rule, scopeSelector, unscopedKeyframesSet)); - } - /** - * Scopes local keyframes names, returning the updated css rule and it also - * adds the original keyframe name to a provided set to collect all keyframes names - * so that it can later be used to scope the animation rules. - * - * For example, it takes a rule such as: - * - * ``` - * @keyframes box-animation { - * to { - * background-color: green; - * } - * } - * ``` - * - * and returns: - * - * ``` - * @keyframes scopeName_box-animation { - * to { - * background-color: green; - * } - * } - * ``` - * and as a side effect it adds "box-animation" to the `unscopedKeyframesSet` set - * - * @param cssRule the css rule to process. - * @param scopeSelector the component's scope selector. - * @param unscopedKeyframesSet the set of unscoped keyframes names (which can be - * modified as a side effect) - * - * @returns the css rule modified with the scoped keyframes name. - */ - _scopeLocalKeyframeDeclarations(rule, scopeSelector, unscopedKeyframesSet) { - return { - ...rule, - selector: rule.selector.replace(/(^@(?:-webkit-)?keyframes(?:\s+))(['"]?)(.+)\2(\s*)$/, (_, start, quote, keyframeName, endSpaces) => { - unscopedKeyframesSet.add(unescapeQuotes(keyframeName, quote)); - return `${start}${quote}${scopeSelector}_${keyframeName}${quote}${endSpaces}`; - }) - }; - } - /** - * Function used to scope a keyframes name (obtained from an animation declaration) - * using an existing set of unscopedKeyframes names to discern if the scoping needs to be - * performed (keyframes names of keyframes not defined in the component's css need not to be - * scoped). - * - * @param keyframe the keyframes name to check. - * @param scopeSelector the component's scope selector. - * @param unscopedKeyframesSet the set of unscoped keyframes names. - * - * @returns the scoped name of the keyframe, or the original name is the name need not to be - * scoped. - */ - _scopeAnimationKeyframe(keyframe, scopeSelector, unscopedKeyframesSet) { - return keyframe.replace(/^(\s*)(['"]?)(.+?)\2(\s*)$/, (_, spaces1, quote, name, spaces2) => { - name = `${unscopedKeyframesSet.has(unescapeQuotes(name, quote)) ? scopeSelector + '_' : ''}${name}`; - return `${spaces1}${quote}${name}${quote}${spaces2}`; - }); - } - /** - * Scope an animation rule so that the keyframes mentioned in such rule - * are scoped if defined in the component's css and left untouched otherwise. - * - * It can scope values of both the 'animation' and 'animation-name' properties. - * - * @param rule css rule to scope. - * @param scopeSelector the component's scope selector. - * @param unscopedKeyframesSet the set of unscoped keyframes names. - * - * @returns the updated css rule. - **/ - _scopeAnimationRule(rule, scopeSelector, unscopedKeyframesSet) { - let content = rule.content.replace(/((?:^|\s+|;)(?:-webkit-)?animation(?:\s*):(?:\s*))([^;]+)/g, (_, start, animationDeclarations) => start + animationDeclarations.replace(this._animationDeclarationKeyframesRe, (original, leadingSpaces, quote = '', quotedName, nonQuotedName) => { - if (quotedName) { - return `${leadingSpaces}${this._scopeAnimationKeyframe(`${quote}${quotedName}${quote}`, scopeSelector, unscopedKeyframesSet)}`; - } else { - return animationKeywords.has(nonQuotedName) ? original : `${leadingSpaces}${this._scopeAnimationKeyframe(nonQuotedName, scopeSelector, unscopedKeyframesSet)}`; - } - })); - content = content.replace(/((?:^|\s+|;)(?:-webkit-)?animation-name(?:\s*):(?:\s*))([^;]+)/g, (_match, start, commaSeparatedKeyframes) => `${start}${commaSeparatedKeyframes.split(',').map(keyframe => this._scopeAnimationKeyframe(keyframe, scopeSelector, unscopedKeyframesSet)).join(',')}`); - return { - ...rule, - content - }; - } - /* - * Process styles to convert native ShadowDOM rules that will trip - * up the css parser; we rely on decorating the stylesheet with inert rules. - * - * For example, we convert this rule: - * - * polyfill-next-selector { content: ':host menu-item'; } - * ::content menu-item { - * - * to this: - * - * scopeName menu-item { - * - **/ - _insertPolyfillDirectivesInCssText(cssText) { - return cssText.replace(_cssContentNextSelectorRe, function (...m) { - return m[2] + '{'; - }); - } - /* - * Process styles to add rules which will only apply under the polyfill - * - * For example, we convert this rule: - * - * polyfill-rule { - * content: ':host menu-item'; - * ... - * } - * - * to this: - * - * scopeName menu-item {...} - * - **/ - _insertPolyfillRulesInCssText(cssText) { - return cssText.replace(_cssContentRuleRe, (...m) => { - const rule = m[0].replace(m[1], '').replace(m[2], ''); - return m[4] + rule; - }); - } - /* Ensure styles are scoped. Pseudo-scoping takes a rule like: - * - * .foo {... } - * - * and converts this to - * - * scopeName .foo { ... } - */ - _scopeCssText(cssText, scopeSelector, hostSelector) { - const unscopedRules = this._extractUnscopedRulesFromCssText(cssText); - // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively - cssText = this._insertPolyfillHostInCssText(cssText); - cssText = this._convertColonHost(cssText); - cssText = this._convertColonHostContext(cssText); - cssText = this._convertShadowDOMSelectors(cssText); - if (scopeSelector) { - cssText = this._scopeKeyframesRelatedCss(cssText, scopeSelector); - cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector); - } - cssText = cssText + '\n' + unscopedRules; - return cssText.trim(); - } - /* - * Process styles to add rules which will only apply under the polyfill - * and do not process via CSSOM. (CSSOM is destructive to rules on rare - * occasions, e.g. -webkit-calc on Safari.) - * For example, we convert this rule: - * - * @polyfill-unscoped-rule { - * content: 'menu-item'; - * ... } - * - * to this: - * - * menu-item {...} - * - **/ - _extractUnscopedRulesFromCssText(cssText) { - let r = ''; - let m; - _cssContentUnscopedRuleRe.lastIndex = 0; - while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) { - const rule = m[0].replace(m[2], '').replace(m[1], m[4]); - r += rule + '\n\n'; - } - return r; - } - /* - * convert a rule like :host(.foo) > .bar { } - * - * to - * - * .foo > .bar - */ - _convertColonHost(cssText) { - return cssText.replace(_cssColonHostRe, (_, hostSelectors, otherSelectors) => { - if (hostSelectors) { - const convertedSelectors = []; - const hostSelectorArray = hostSelectors.split(',').map(p => p.trim()); - for (const hostSelector of hostSelectorArray) { - if (!hostSelector) break; - const convertedSelector = _polyfillHostNoCombinator + hostSelector.replace(_polyfillHost, '') + otherSelectors; - convertedSelectors.push(convertedSelector); - } - return convertedSelectors.join(','); - } else { - return _polyfillHostNoCombinator + otherSelectors; - } - }); - } - /* - * convert a rule like :host-context(.foo) > .bar { } - * - * to - * - * .foo > .bar, .foo > .bar { } - * - * and - * - * :host-context(.foo:host) .bar { ... } - * - * to - * - * .foo .bar { ... } - */ - _convertColonHostContext(cssText) { - return cssText.replace(_cssColonHostContextReGlobal, selectorText => { - // We have captured a selector that contains a `:host-context` rule. - // For backward compatibility `:host-context` may contain a comma separated list of selectors. - // Each context selector group will contain a list of host-context selectors that must match - // an ancestor of the host. - // (Normally `contextSelectorGroups` will only contain a single array of context selectors.) - const contextSelectorGroups = [[]]; - // There may be more than `:host-context` in this selector so `selectorText` could look like: - // `:host-context(.one):host-context(.two)`. - // Execute `_cssColonHostContextRe` over and over until we have extracted all the - // `:host-context` selectors from this selector. - let match; - while (match = _cssColonHostContextRe.exec(selectorText)) { - // `match` = [':host-context()', , ] - // The `` could actually be a comma separated list: `:host-context(.one, .two)`. - const newContextSelectors = (match[1] ?? '').trim().split(',').map(m => m.trim()).filter(m => m !== ''); - // We must duplicate the current selector group for each of these new selectors. - // For example if the current groups are: - // ``` - // [ - // ['a', 'b', 'c'], - // ['x', 'y', 'z'], - // ] - // ``` - // And we have a new set of comma separated selectors: `:host-context(m,n)` then the new - // groups are: - // ``` - // [ - // ['a', 'b', 'c', 'm'], - // ['x', 'y', 'z', 'm'], - // ['a', 'b', 'c', 'n'], - // ['x', 'y', 'z', 'n'], - // ] - // ``` - const contextSelectorGroupsLength = contextSelectorGroups.length; - repeatGroups(contextSelectorGroups, newContextSelectors.length); - for (let i = 0; i < newContextSelectors.length; i++) { - for (let j = 0; j < contextSelectorGroupsLength; j++) { - contextSelectorGroups[j + i * contextSelectorGroupsLength].push(newContextSelectors[i]); - } - } - // Update the `selectorText` and see repeat to see if there are more `:host-context`s. - selectorText = match[2]; - } - // The context selectors now must be combined with each other to capture all the possible - // selectors that `:host-context` can match. See `combineHostContextSelectors()` for more - // info about how this is done. - return contextSelectorGroups.map(contextSelectors => combineHostContextSelectors(contextSelectors, selectorText)).join(', '); - }); - } - /* - * Convert combinators like ::shadow and pseudo-elements like ::content - * by replacing with space. - */ - _convertShadowDOMSelectors(cssText) { - return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText); - } - // change a selector like 'div' to 'name div' - _scopeSelectors(cssText, scopeSelector, hostSelector) { - return processRules(cssText, rule => { - let selector = rule.selector; - let content = rule.content; - if (rule.selector[0] !== '@') { - selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector); - } else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || rule.selector.startsWith('@document') || rule.selector.startsWith('@layer') || rule.selector.startsWith('@container') || rule.selector.startsWith('@scope')) { - content = this._scopeSelectors(rule.content, scopeSelector, hostSelector); - } else if (rule.selector.startsWith('@font-face') || rule.selector.startsWith('@page')) { - content = this._stripScopingSelectors(rule.content); - } - return new CssRule(selector, content); - }); - } - /** - * Handle a css text that is within a rule that should not contain scope selectors by simply - * removing them! An example of such a rule is `@font-face`. - * - * `@font-face` rules cannot contain nested selectors. Nor can they be nested under a selector. - * Normally this would be a syntax error by the author of the styles. But in some rare cases, such - * as importing styles from a library, and applying `:host ::ng-deep` to the imported styles, we - * can end up with broken css if the imported styles happen to contain @font-face rules. - * - * For example: - * - * ``` - * :host ::ng-deep { - * import 'some/lib/containing/font-face'; - * } - * - * Similar logic applies to `@page` rules which can contain a particular set of properties, - * as well as some specific at-rules. Since they can't be encapsulated, we have to strip - * any scoping selectors from them. For more information: https://www.w3.org/TR/css-page-3 - * ``` - */ - _stripScopingSelectors(cssText) { - return processRules(cssText, rule => { - const selector = rule.selector.replace(_shadowDeepSelectors, ' ').replace(_polyfillHostNoCombinatorRe, ' '); - return new CssRule(selector, rule.content); - }); - } - _scopeSelector(selector, scopeSelector, hostSelector) { - return selector.split(',').map(part => part.trim().split(_shadowDeepSelectors)).map(deepParts => { - const [shallowPart, ...otherParts] = deepParts; - const applyScope = shallowPart => { - if (this._selectorNeedsScoping(shallowPart, scopeSelector)) { - return this._applySelectorScope(shallowPart, scopeSelector, hostSelector); - } else { - return shallowPart; - } - }; - return [applyScope(shallowPart), ...otherParts].join(' '); - }).join(', '); - } - _selectorNeedsScoping(selector, scopeSelector) { - const re = this._makeScopeMatcher(scopeSelector); - return !re.test(selector); - } - _makeScopeMatcher(scopeSelector) { - const lre = /\[/g; - const rre = /\]/g; - scopeSelector = scopeSelector.replace(lre, '\\[').replace(rre, '\\]'); - return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm'); - } - // scope via name and [is=name] - _applySimpleSelectorScope(selector, scopeSelector, hostSelector) { - // In Android browser, the lastIndex is not reset when the regex is used in String.replace() - _polyfillHostRe.lastIndex = 0; - if (_polyfillHostRe.test(selector)) { - const replaceBy = `[${hostSelector}]`; - return selector.replace(_polyfillHostNoCombinatorRe, (hnc, selector) => { - return selector.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => { - return before + replaceBy + colon + after; - }); - }).replace(_polyfillHostRe, replaceBy + ' '); - } - return scopeSelector + ' ' + selector; - } - // return a selector with [name] suffix on each simple selector - // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */ - _applySelectorScope(selector, scopeSelector, hostSelector) { - const isRe = /\[is=([^\]]*)\]/g; - scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]); - const attrName = '[' + scopeSelector + ']'; - const _scopeSelectorPart = p => { - let scopedP = p.trim(); - if (!scopedP) { - return ''; - } - if (p.indexOf(_polyfillHostNoCombinator) > -1) { - scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector); - } else { - // remove :host since it should be unnecessary - const t = p.replace(_polyfillHostRe, ''); - if (t.length > 0) { - const matches = t.match(/([^:]*)(:*)(.*)/); - if (matches) { - scopedP = matches[1] + attrName + matches[2] + matches[3]; - } - } - } - return scopedP; - }; - const safeContent = new SafeSelector(selector); - selector = safeContent.content(); - let scopedSelector = ''; - let startIndex = 0; - let res; - const sep = /( |>|\+|~(?!=))\s*/g; - // If a selector appears before :host it should not be shimmed as it - // matches on ancestor elements and not on elements in the host's shadow - // `:host-context(div)` is transformed to - // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator` - // the `div` is not part of the component in the 2nd selectors and should not be scoped. - // Historically `component-tag:host` was matching the component so we also want to preserve - // this behavior to avoid breaking legacy apps (it should not match). - // The behavior should be: - // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything) - // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a - // `:host-context(tag)`) - const hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1; - // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present - let shouldScope = !hasHost; - while ((res = sep.exec(selector)) !== null) { - const separator = res[1]; - const part = selector.slice(startIndex, res.index).trim(); - // A space following an escaped hex value and followed by another hex character - // (ie: ".\fc ber" for ".über") is not a separator between 2 selectors - // also keep in mind that backslashes are replaced by a placeholder by SafeSelector - // These escaped selectors happen for example when esbuild runs with optimization.minify. - if (part.match(_placeholderRe) && selector[res.index + 1]?.match(/[a-fA-F\d]/)) { - continue; - } - shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; - const scopedPart = shouldScope ? _scopeSelectorPart(part) : part; - scopedSelector += `${scopedPart} ${separator} `; - startIndex = sep.lastIndex; - } - const part = selector.substring(startIndex); - shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; - scopedSelector += shouldScope ? _scopeSelectorPart(part) : part; - // replace the placeholders with their original values - return safeContent.restore(scopedSelector); - } - _insertPolyfillHostInCssText(selector) { - return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost); - } -} -class SafeSelector { - constructor(selector) { - this.placeholders = []; - this.index = 0; - // Replaces attribute selectors with placeholders. - // The WS in [attr="va lue"] would otherwise be interpreted as a selector separator. - selector = this._escapeRegexMatches(selector, /(\[[^\]]*\])/g); - // CSS allows for certain special characters to be used in selectors if they're escaped. - // E.g. `.foo:blue` won't match a class called `foo:blue`, because the colon denotes a - // pseudo-class, but writing `.foo\:blue` will match, because the colon was escaped. - // Replace all escape sequences (`\` followed by a character) with a placeholder so - // that our handling of pseudo-selectors doesn't mess with them. - selector = this._escapeRegexMatches(selector, /(\\.)/g); - // Replaces the expression in `:nth-child(2n + 1)` with a placeholder. - // WS and "+" would otherwise be interpreted as selector separators. - this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, (_, pseudo, exp) => { - const replaceBy = `__ph-${this.index}__`; - this.placeholders.push(exp); - this.index++; - return pseudo + replaceBy; - }); - } - restore(content) { - return content.replace(_placeholderRe, (_ph, index) => this.placeholders[+index]); - } - content() { - return this._content; - } - /** - * Replaces all of the substrings that match a regex within a - * special string (e.g. `__ph-0__`, `__ph-1__`, etc). - */ - _escapeRegexMatches(content, pattern) { - return content.replace(pattern, (_, keep) => { - const replaceBy = `__ph-${this.index}__`; - this.placeholders.push(keep); - this.index++; - return replaceBy; - }); - } -} -const _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim; -const _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; -const _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; -const _polyfillHost = '-shadowcsshost'; -// note: :host-context pre-processed to -shadowcsshostcontext. -const _polyfillHostContext = '-shadowcsscontext'; -const _parenSuffix = '(?:\\((' + '(?:\\([^)(]*\\)|[^)(]*)+?' + ')\\))?([^,{]*)'; -const _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix, 'gim'); -const _cssColonHostContextReGlobal = new RegExp(_polyfillHostContext + _parenSuffix, 'gim'); -const _cssColonHostContextRe = new RegExp(_polyfillHostContext + _parenSuffix, 'im'); -const _polyfillHostNoCombinator = _polyfillHost + '-no-combinator'; -const _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/; -const _shadowDOMSelectorsRe = [/::shadow/g, /::content/g, -// Deprecated selectors -/\/shadow-deep\//g, /\/shadow\//g]; -// The deep combinator is deprecated in the CSS spec -// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. -// see https://github.com/angular/angular/pull/17677 -const _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; -const _selectorReSuffix = '([>\\s~+[.,{:][\\s\\S]*)?$'; -const _polyfillHostRe = /-shadowcsshost/gim; -const _colonHostRe = /:host/gim; -const _colonHostContextRe = /:host-context/gim; -const _newLinesRe = /\r?\n/g; -const _commentRe = /\/\*[\s\S]*?\*\//g; -const _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=/g; -const COMMENT_PLACEHOLDER = '%COMMENT%'; -const _commentWithHashPlaceHolderRe = new RegExp(COMMENT_PLACEHOLDER, 'g'); -const _placeholderRe = /__ph-(\d+)__/g; -const BLOCK_PLACEHOLDER = '%BLOCK%'; -const _ruleRe = new RegExp(`(\\s*(?:${COMMENT_PLACEHOLDER}\\s*)*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))`, 'g'); -const CONTENT_PAIRS = new Map([['{', '}']]); -const COMMA_IN_PLACEHOLDER = '%COMMA_IN_PLACEHOLDER%'; -const SEMI_IN_PLACEHOLDER = '%SEMI_IN_PLACEHOLDER%'; -const COLON_IN_PLACEHOLDER = '%COLON_IN_PLACEHOLDER%'; -const _cssCommaInPlaceholderReGlobal = new RegExp(COMMA_IN_PLACEHOLDER, 'g'); -const _cssSemiInPlaceholderReGlobal = new RegExp(SEMI_IN_PLACEHOLDER, 'g'); -const _cssColonInPlaceholderReGlobal = new RegExp(COLON_IN_PLACEHOLDER, 'g'); -class CssRule { - constructor(selector, content) { - this.selector = selector; - this.content = content; - } -} -function processRules(input, ruleCallback) { - const escaped = escapeInStrings(input); - const inputWithEscapedBlocks = escapeBlocks(escaped, CONTENT_PAIRS, BLOCK_PLACEHOLDER); - let nextBlockIndex = 0; - const escapedResult = inputWithEscapedBlocks.escapedString.replace(_ruleRe, (...m) => { - const selector = m[2]; - let content = ''; - let suffix = m[4]; - let contentPrefix = ''; - if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { - content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; - suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); - contentPrefix = '{'; - } - const rule = ruleCallback(new CssRule(selector, content)); - return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`; - }); - return unescapeInStrings(escapedResult); -} -class StringWithEscapedBlocks { - constructor(escapedString, blocks) { - this.escapedString = escapedString; - this.blocks = blocks; - } -} -function escapeBlocks(input, charPairs, placeholder) { - const resultParts = []; - const escapedBlocks = []; - let openCharCount = 0; - let nonBlockStartIndex = 0; - let blockStartIndex = -1; - let openChar; - let closeChar; - for (let i = 0; i < input.length; i++) { - const char = input[i]; - if (char === '\\') { - i++; - } else if (char === closeChar) { - openCharCount--; - if (openCharCount === 0) { - escapedBlocks.push(input.substring(blockStartIndex, i)); - resultParts.push(placeholder); - nonBlockStartIndex = i; - blockStartIndex = -1; - openChar = closeChar = undefined; - } - } else if (char === openChar) { - openCharCount++; - } else if (openCharCount === 0 && charPairs.has(char)) { - openChar = char; - closeChar = charPairs.get(char); - openCharCount = 1; - blockStartIndex = i + 1; - resultParts.push(input.substring(nonBlockStartIndex, blockStartIndex)); - } - } - if (blockStartIndex !== -1) { - escapedBlocks.push(input.substring(blockStartIndex)); - resultParts.push(placeholder); - } else { - resultParts.push(input.substring(nonBlockStartIndex)); - } - return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks); -} -/** - * Object containing as keys characters that should be substituted by placeholders - * when found in strings during the css text parsing, and as values the respective - * placeholders - */ -const ESCAPE_IN_STRING_MAP = { - ';': SEMI_IN_PLACEHOLDER, - ',': COMMA_IN_PLACEHOLDER, - ':': COLON_IN_PLACEHOLDER -}; -/** - * Parse the provided css text and inside strings (meaning, inside pairs of unescaped single or - * double quotes) replace specific characters with their respective placeholders as indicated - * by the `ESCAPE_IN_STRING_MAP` map. - * - * For example convert the text - * `animation: "my-anim:at\"ion" 1s;` - * to - * `animation: "my-anim%COLON_IN_PLACEHOLDER%at\"ion" 1s;` - * - * This is necessary in order to remove the meaning of some characters when found inside strings - * (for example `;` indicates the end of a css declaration, `,` the sequence of values and `:` the - * division between property and value during a declaration, none of these meanings apply when such - * characters are within strings and so in order to prevent parsing issues they need to be replaced - * with placeholder text for the duration of the css manipulation process). - * - * @param input the original css text. - * - * @returns the css text with specific characters in strings replaced by placeholders. - **/ -function escapeInStrings(input) { - let result = input; - let currentQuoteChar = null; - for (let i = 0; i < result.length; i++) { - const char = result[i]; - if (char === '\\') { - i++; - } else { - if (currentQuoteChar !== null) { - // index i is inside a quoted sub-string - if (char === currentQuoteChar) { - currentQuoteChar = null; - } else { - const placeholder = ESCAPE_IN_STRING_MAP[char]; - if (placeholder) { - result = `${result.substr(0, i)}${placeholder}${result.substr(i + 1)}`; - i += placeholder.length - 1; - } - } - } else if (char === '\'' || char === '"') { - currentQuoteChar = char; - } - } - } - return result; -} -/** - * Replace in a string all occurrences of keys in the `ESCAPE_IN_STRING_MAP` map with their - * original representation, this is simply used to revert the changes applied by the - * escapeInStrings function. - * - * For example it reverts the text: - * `animation: "my-anim%COLON_IN_PLACEHOLDER%at\"ion" 1s;` - * to it's original form of: - * `animation: "my-anim:at\"ion" 1s;` - * - * Note: For the sake of simplicity this function does not check that the placeholders are - * actually inside strings as it would anyway be extremely unlikely to find them outside of strings. - * - * @param input the css text containing the placeholders. - * - * @returns the css text without the placeholders. - */ -function unescapeInStrings(input) { - let result = input.replace(_cssCommaInPlaceholderReGlobal, ','); - result = result.replace(_cssSemiInPlaceholderReGlobal, ';'); - result = result.replace(_cssColonInPlaceholderReGlobal, ':'); - return result; -} -/** - * Unescape all quotes present in a string, but only if the string was actually already - * quoted. - * - * This generates a "canonical" representation of strings which can be used to match strings - * which would otherwise only differ because of differently escaped quotes. - * - * For example it converts the string (assumed to be quoted): - * `this \\"is\\" a \\'\\\\'test` - * to: - * `this "is" a '\\\\'test` - * (note that the latter backslashes are not removed as they are not actually escaping the single - * quote) - * - * - * @param input the string possibly containing escaped quotes. - * @param isQuoted boolean indicating whether the string was quoted inside a bigger string (if not - * then it means that it doesn't represent an inner string and thus no unescaping is required) - * - * @returns the string in the "canonical" representation without escaped quotes. - */ -function unescapeQuotes(str, isQuoted) { - return !isQuoted ? str : str.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g, '$1'); -} -/** - * Combine the `contextSelectors` with the `hostMarker` and the `otherSelectors` - * to create a selector that matches the same as `:host-context()`. - * - * Given a single context selector `A` we need to output selectors that match on the host and as an - * ancestor of the host: - * - * ``` - * A , A {} - * ``` - * - * When there is more than one context selector we also have to create combinations of those - * selectors with each other. For example if there are `A` and `B` selectors the output is: - * - * ``` - * AB, AB , A B, - * B A, A B , B A {} - * ``` - * - * And so on... - * - * @param contextSelectors an array of context selectors that will be combined. - * @param otherSelectors the rest of the selectors that are not context selectors. - */ -function combineHostContextSelectors(contextSelectors, otherSelectors) { - const hostMarker = _polyfillHostNoCombinator; - _polyfillHostRe.lastIndex = 0; // reset the regex to ensure we get an accurate test - const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors); - // If there are no context selectors then just output a host marker - if (contextSelectors.length === 0) { - return hostMarker + otherSelectors; - } - const combined = [contextSelectors.pop() || '']; - while (contextSelectors.length > 0) { - const length = combined.length; - const contextSelector = contextSelectors.pop(); - for (let i = 0; i < length; i++) { - const previousSelectors = combined[i]; - // Add the new selector as a descendant of the previous selectors - combined[length * 2 + i] = previousSelectors + ' ' + contextSelector; - // Add the new selector as an ancestor of the previous selectors - combined[length + i] = contextSelector + ' ' + previousSelectors; - // Add the new selector to act on the same element as the previous selectors - combined[i] = contextSelector + previousSelectors; - } - } - // Finally connect the selector to the `hostMarker`s: either acting directly on the host - // (A) or as an ancestor (A ). - return combined.map(s => otherSelectorsHasHost ? `${s}${otherSelectors}` : `${s}${hostMarker}${otherSelectors}, ${s} ${hostMarker}${otherSelectors}`).join(','); -} -/** - * Mutate the given `groups` array so that there are `multiples` clones of the original array - * stored. - * - * For example `repeatGroups([a, b], 3)` will result in `[a, b, a, b, a, b]` - but importantly the - * newly added groups will be clones of the original. - * - * @param groups An array of groups of strings that will be repeated. This array is mutated - * in-place. - * @param multiples The number of times the current groups should appear. - */ -function repeatGroups(groups, multiples) { - const length = groups.length; - for (let i = 1; i < multiples; i++) { - for (let j = 0; j < length; j++) { - groups[j + i * length] = groups[j].slice(0); - } - } -} -var TagContentType; -(function (TagContentType) { - TagContentType[TagContentType["RAW_TEXT"] = 0] = "RAW_TEXT"; - TagContentType[TagContentType["ESCAPABLE_RAW_TEXT"] = 1] = "ESCAPABLE_RAW_TEXT"; - TagContentType[TagContentType["PARSABLE_DATA"] = 2] = "PARSABLE_DATA"; -})(TagContentType || (TagContentType = {})); -function splitNsName(elementName) { - if (elementName[0] != ':') { - return [null, elementName]; - } - const colonIndex = elementName.indexOf(':', 1); - if (colonIndex === -1) { - throw new Error(`Unsupported format "${elementName}" expecting ":namespace:name"`); - } - return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)]; -} -// `` tags work the same regardless the namespace -function isNgContainer(tagName) { - return splitNsName(tagName)[1] === 'ng-container'; -} -// `` tags work the same regardless the namespace -function isNgContent(tagName) { - return splitNsName(tagName)[1] === 'ng-content'; -} -// `` tags work the same regardless the namespace -function isNgTemplate(tagName) { - return splitNsName(tagName)[1] === 'ng-template'; -} -function getNsPrefix(fullName) { - return fullName === null ? null : splitNsName(fullName)[0]; -} -function mergeNsAndName(prefix, localName) { - return prefix ? `:${prefix}:${localName}` : localName; -} - -/** - * Enumeration of the types of attributes which can be applied to an element. - */ -var BindingKind; -(function (BindingKind) { - /** - * Static attributes. - */ - BindingKind[BindingKind["Attribute"] = 0] = "Attribute"; - /** - * Class bindings. - */ - BindingKind[BindingKind["ClassName"] = 1] = "ClassName"; - /** - * Style bindings. - */ - BindingKind[BindingKind["StyleProperty"] = 2] = "StyleProperty"; - /** - * Dynamic property bindings. - */ - BindingKind[BindingKind["Property"] = 3] = "Property"; - /** - * Property or attribute bindings on a template. - */ - BindingKind[BindingKind["Template"] = 4] = "Template"; - /** - * Internationalized attributes. - */ - BindingKind[BindingKind["I18n"] = 5] = "I18n"; - /** - * TODO: Consider how Animations are handled, and if they should be a distinct BindingKind. - */ - BindingKind[BindingKind["Animation"] = 6] = "Animation"; -})(BindingKind || (BindingKind = {})); -const FLYWEIGHT_ARRAY = Object.freeze([]); -/** - * Container for all of the various kinds of attributes which are applied on an element. - */ -class ElementAttributes { - constructor() { - this.known = new Set(); - this.byKind = new Map(); - this.projectAs = null; - } - get attributes() { - return this.byKind.get(BindingKind.Attribute) ?? FLYWEIGHT_ARRAY; - } - get classes() { - return this.byKind.get(BindingKind.ClassName) ?? FLYWEIGHT_ARRAY; - } - get styles() { - return this.byKind.get(BindingKind.StyleProperty) ?? FLYWEIGHT_ARRAY; - } - get bindings() { - return this.byKind.get(BindingKind.Property) ?? FLYWEIGHT_ARRAY; - } - get template() { - return this.byKind.get(BindingKind.Template) ?? FLYWEIGHT_ARRAY; - } - get i18n() { - return this.byKind.get(BindingKind.I18n) ?? FLYWEIGHT_ARRAY; - } - add(kind, name, value) { - if (this.known.has(name)) { - return; - } - this.known.add(name); - const array = this.arrayFor(kind); - array.push(...getAttributeNameLiterals$1(name)); - if (kind === BindingKind.Attribute || kind === BindingKind.StyleProperty) { - if (value === null) { - throw Error('Attribute & style element attributes must have a value'); - } - array.push(value); - } - } - arrayFor(kind) { - if (!this.byKind.has(kind)) { - this.byKind.set(kind, []); - } - return this.byKind.get(kind); - } -} -function getAttributeNameLiterals$1(name) { - const [attributeNamespace, attributeName] = splitNsName(name); - const nameLiteral = literal(attributeName); - if (attributeNamespace) { - return [literal(0 /* core.AttributeMarker.NamespaceURI */), literal(attributeNamespace), nameLiteral]; - } - return [nameLiteral]; -} -function assertIsElementAttributes(attrs) { - if (!(attrs instanceof ElementAttributes)) { - throw new Error(`AssertionError: ElementAttributes has already been coalesced into the view constants`); - } -} - -/** - * Distinguishes different kinds of IR operations. - * - * Includes both creation and update operations. - */ -var OpKind; -(function (OpKind) { - /** - * A special operation type which is used to represent the beginning and end nodes of a linked - * list of operations. - */ - OpKind[OpKind["ListEnd"] = 0] = "ListEnd"; - /** - * An operation which wraps an output AST statement. - */ - OpKind[OpKind["Statement"] = 1] = "Statement"; - /** - * An operation which declares and initializes a `SemanticVariable`. - */ - OpKind[OpKind["Variable"] = 2] = "Variable"; - /** - * An operation to begin rendering of an element. - */ - OpKind[OpKind["ElementStart"] = 3] = "ElementStart"; - /** - * An operation to render an element with no children. - */ - OpKind[OpKind["Element"] = 4] = "Element"; - /** - * An operation which declares an embedded view. - */ - OpKind[OpKind["Template"] = 5] = "Template"; - /** - * An operation to end rendering of an element previously started with `ElementStart`. - */ - OpKind[OpKind["ElementEnd"] = 6] = "ElementEnd"; - /** - * An operation to begin an `ng-container`. - */ - OpKind[OpKind["ContainerStart"] = 7] = "ContainerStart"; - /** - * An operation for an `ng-container` with no children. - */ - OpKind[OpKind["Container"] = 8] = "Container"; - /** - * An operation to end an `ng-container`. - */ - OpKind[OpKind["ContainerEnd"] = 9] = "ContainerEnd"; - /** - * An operation disable binding for subsequent elements, which are descendants of a non-bindable - * node. - */ - OpKind[OpKind["DisableBindings"] = 10] = "DisableBindings"; - /** - * An operation to re-enable binding, after it was previously disabled. - */ - OpKind[OpKind["EnableBindings"] = 11] = "EnableBindings"; - /** - * An operation to render a text node. - */ - OpKind[OpKind["Text"] = 12] = "Text"; - /** - * An operation declaring an event listener for an element. - */ - OpKind[OpKind["Listener"] = 13] = "Listener"; - /** - * An operation to interpolate text into a text node. - */ - OpKind[OpKind["InterpolateText"] = 14] = "InterpolateText"; - /** - * An intermediate binding op, that has not yet been processed into an individual property, - * attribute, style, etc. - */ - OpKind[OpKind["Binding"] = 15] = "Binding"; - /** - * An operation to bind an expression to a property of an element. - */ - OpKind[OpKind["Property"] = 16] = "Property"; - /** - * An operation to bind an expression to a style property of an element. - */ - OpKind[OpKind["StyleProp"] = 17] = "StyleProp"; - /** - * An operation to bind an expression to a class property of an element. - */ - OpKind[OpKind["ClassProp"] = 18] = "ClassProp"; - /** - * An operation to bind an expression to the styles of an element. - */ - OpKind[OpKind["StyleMap"] = 19] = "StyleMap"; - /** - * An operation to bind an expression to the classes of an element. - */ - OpKind[OpKind["ClassMap"] = 20] = "ClassMap"; - /** - * An operation to advance the runtime's implicit slot context during the update phase of a view. - */ - OpKind[OpKind["Advance"] = 21] = "Advance"; - /** - * An operation to instantiate a pipe. - */ - OpKind[OpKind["Pipe"] = 22] = "Pipe"; - /** - * An operation to associate an attribute with an element. - */ - OpKind[OpKind["Attribute"] = 23] = "Attribute"; - /** - * A host binding property. - */ - OpKind[OpKind["HostProperty"] = 24] = "HostProperty"; - /** - * A namespace change, which causes the subsequent elements to be processed as either HTML or SVG. - */ - OpKind[OpKind["Namespace"] = 25] = "Namespace"; - // TODO: Add Host Listeners, and possibly other host ops also. -})(OpKind || (OpKind = {})); -/** - * Distinguishes different kinds of IR expressions. - */ -var ExpressionKind; -(function (ExpressionKind) { - /** - * Read of a variable in a lexical scope. - */ - ExpressionKind[ExpressionKind["LexicalRead"] = 0] = "LexicalRead"; - /** - * A reference to the current view context. - */ - ExpressionKind[ExpressionKind["Context"] = 1] = "Context"; - /** - * Read of a variable declared in a `VariableOp`. - */ - ExpressionKind[ExpressionKind["ReadVariable"] = 2] = "ReadVariable"; - /** - * Runtime operation to navigate to the next view context in the view hierarchy. - */ - ExpressionKind[ExpressionKind["NextContext"] = 3] = "NextContext"; - /** - * Runtime operation to retrieve the value of a local reference. - */ - ExpressionKind[ExpressionKind["Reference"] = 4] = "Reference"; - /** - * Runtime operation to snapshot the current view context. - */ - ExpressionKind[ExpressionKind["GetCurrentView"] = 5] = "GetCurrentView"; - /** - * Runtime operation to restore a snapshotted view. - */ - ExpressionKind[ExpressionKind["RestoreView"] = 6] = "RestoreView"; - /** - * Runtime operation to reset the current view context after `RestoreView`. - */ - ExpressionKind[ExpressionKind["ResetView"] = 7] = "ResetView"; - /** - * Defines and calls a function with change-detected arguments. - */ - ExpressionKind[ExpressionKind["PureFunctionExpr"] = 8] = "PureFunctionExpr"; - /** - * Indicates a positional parameter to a pure function definition. - */ - ExpressionKind[ExpressionKind["PureFunctionParameterExpr"] = 9] = "PureFunctionParameterExpr"; - /** - * Binding to a pipe transformation. - */ - ExpressionKind[ExpressionKind["PipeBinding"] = 10] = "PipeBinding"; - /** - * Binding to a pipe transformation with a variable number of arguments. - */ - ExpressionKind[ExpressionKind["PipeBindingVariadic"] = 11] = "PipeBindingVariadic"; - /* - * A safe property read requiring expansion into a null check. - */ - ExpressionKind[ExpressionKind["SafePropertyRead"] = 12] = "SafePropertyRead"; - /** - * A safe keyed read requiring expansion into a null check. - */ - ExpressionKind[ExpressionKind["SafeKeyedRead"] = 13] = "SafeKeyedRead"; - /** - * A safe function call requiring expansion into a null check. - */ - ExpressionKind[ExpressionKind["SafeInvokeFunction"] = 14] = "SafeInvokeFunction"; - /** - * An intermediate expression that will be expanded from a safe read into an explicit ternary. - */ - ExpressionKind[ExpressionKind["SafeTernaryExpr"] = 15] = "SafeTernaryExpr"; - /** - * An empty expression that will be stipped before generating the final output. - */ - ExpressionKind[ExpressionKind["EmptyExpr"] = 16] = "EmptyExpr"; - /* - * An assignment to a temporary variable. - */ - ExpressionKind[ExpressionKind["AssignTemporaryExpr"] = 17] = "AssignTemporaryExpr"; - /** - * A reference to a temporary variable. - */ - ExpressionKind[ExpressionKind["ReadTemporaryExpr"] = 18] = "ReadTemporaryExpr"; - /** - * An expression representing a sanitizer function. - */ - ExpressionKind[ExpressionKind["SanitizerExpr"] = 19] = "SanitizerExpr"; -})(ExpressionKind || (ExpressionKind = {})); -/** - * Distinguishes between different kinds of `SemanticVariable`s. - */ -var SemanticVariableKind; -(function (SemanticVariableKind) { - /** - * Represents the context of a particular view. - */ - SemanticVariableKind[SemanticVariableKind["Context"] = 0] = "Context"; - /** - * Represents an identifier declared in the lexical scope of a view. - */ - SemanticVariableKind[SemanticVariableKind["Identifier"] = 1] = "Identifier"; - /** - * Represents a saved state that can be used to restore a view in a listener handler function. - */ - SemanticVariableKind[SemanticVariableKind["SavedView"] = 2] = "SavedView"; -})(SemanticVariableKind || (SemanticVariableKind = {})); -/** - * Whether to compile in compatibilty mode. In compatibility mode, the template pipeline will - * attempt to match the output of `TemplateDefinitionBuilder` as exactly as possible, at the cost of - * producing quirky or larger code in some cases. - */ -var CompatibilityMode; -(function (CompatibilityMode) { - CompatibilityMode[CompatibilityMode["Normal"] = 0] = "Normal"; - CompatibilityMode[CompatibilityMode["TemplateDefinitionBuilder"] = 1] = "TemplateDefinitionBuilder"; -})(CompatibilityMode || (CompatibilityMode = {})); -/** - * Represents functions used to sanitize different pieces of a template. - */ -var SanitizerFn; -(function (SanitizerFn) { - SanitizerFn[SanitizerFn["Html"] = 0] = "Html"; - SanitizerFn[SanitizerFn["Script"] = 1] = "Script"; - SanitizerFn[SanitizerFn["Style"] = 2] = "Style"; - SanitizerFn[SanitizerFn["Url"] = 3] = "Url"; - SanitizerFn[SanitizerFn["ResourceUrl"] = 4] = "ResourceUrl"; - SanitizerFn[SanitizerFn["IframeAttribute"] = 5] = "IframeAttribute"; -})(SanitizerFn || (SanitizerFn = {})); - -/** - * Marker symbol for `ConsumesSlotOpTrait`. - */ -const ConsumesSlot = Symbol('ConsumesSlot'); -/** - * Marker symbol for `DependsOnSlotContextOpTrait`. - */ -const DependsOnSlotContext = Symbol('DependsOnSlotContext'); -/** - * Marker symbol for `UsesSlotIndex` trait. - */ -const UsesSlotIndex = Symbol('UsesSlotIndex'); -/** - * Marker symbol for `ConsumesVars` trait. - */ -const ConsumesVarsTrait = Symbol('ConsumesVars'); -/** - * Marker symbol for `UsesVarOffset` trait. - */ -const UsesVarOffset = Symbol('UsesVarOffset'); -/** - * Default values for most `ConsumesSlotOpTrait` fields (used with the spread operator to initialize - * implementors of the trait). - */ -const TRAIT_CONSUMES_SLOT = { - [ConsumesSlot]: true, - slot: null, - numSlotsUsed: 1 -}; -/** - * Default values for most `UsesSlotIndexTrait` fields (used with the spread operator to initialize - * implementors of the trait). - */ -const TRAIT_USES_SLOT_INDEX = { - [UsesSlotIndex]: true, - slot: null -}; -/** - * Default values for most `DependsOnSlotContextOpTrait` fields (used with the spread operator to - * initialize implementors of the trait). - */ -const TRAIT_DEPENDS_ON_SLOT_CONTEXT = { - [DependsOnSlotContext]: true -}; -/** - * Default values for `UsesVars` fields (used with the spread operator to initialize - * implementors of the trait). - */ -const TRAIT_CONSUMES_VARS = { - [ConsumesVarsTrait]: true -}; -/** - * Default values for `UsesVarOffset` fields (used with the spread operator to initialize - * implementors of this trait). - */ -const TRAIT_USES_VAR_OFFSET = { - [UsesVarOffset]: true, - varOffset: null -}; -/** - * Test whether an operation implements `ConsumesSlotOpTrait`. - */ -function hasConsumesSlotTrait(op) { - return op[ConsumesSlot] === true; -} -/** - * Test whether an operation implements `DependsOnSlotContextOpTrait`. - */ -function hasDependsOnSlotContextTrait(op) { - return op[DependsOnSlotContext] === true; -} -function hasConsumesVarsTrait(value) { - return value[ConsumesVarsTrait] === true; -} -/** - * Test whether an expression implements `UsesVarOffsetTrait`. - */ -function hasUsesVarOffsetTrait(expr) { - return expr[UsesVarOffset] === true; -} -function hasUsesSlotIndexTrait(value) { - return value[UsesSlotIndex] === true; -} - -/** - * Create a `StatementOp`. - */ -function createStatementOp(statement) { - return { - kind: OpKind.Statement, - statement, - ...NEW_OP - }; -} -/** - * Create a `VariableOp`. - */ -function createVariableOp(xref, variable, initializer) { - return { - kind: OpKind.Variable, - xref, - variable, - initializer, - ...NEW_OP - }; -} -/** - * Static structure shared by all operations. - * - * Used as a convenience via the spread operator (`...NEW_OP`) when creating new operations, and - * ensures the fields are always in the same order. - */ -const NEW_OP = { - debugListId: null, - prev: null, - next: null -}; - -/** - * Create an `InterpolationTextOp`. - */ -function createInterpolateTextOp(xref, interpolation, sourceSpan) { - return { - kind: OpKind.InterpolateText, - target: xref, - interpolation, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -class Interpolation { - constructor(strings, expressions) { - this.strings = strings; - this.expressions = expressions; - } -} -/** - * Create a `BindingOp`, not yet transformed into a particular type of binding. - */ -function createBindingOp(target, kind, name, expression, unit, securityContext, isTemplate, sourceSpan) { - return { - kind: OpKind.Binding, - bindingKind: kind, - target, - name, - expression, - unit, - securityContext, - isTemplate, - sourceSpan, - ...NEW_OP - }; -} -/** - * Create a `PropertyOp`. - */ -function createPropertyOp(target, name, expression, isAnimationTrigger, securityContext, isTemplate, sourceSpan) { - return { - kind: OpKind.Property, - target, - name, - expression, - isAnimationTrigger, - securityContext, - sanitizer: null, - isTemplate, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -/** Create a `StylePropOp`. */ -function createStylePropOp(xref, name, expression, unit, sourceSpan) { - return { - kind: OpKind.StyleProp, - target: xref, - name, - expression, - unit, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -/** - * Create a `ClassPropOp`. - */ -function createClassPropOp(xref, name, expression, sourceSpan) { - return { - kind: OpKind.ClassProp, - target: xref, - name, - expression, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -/** Create a `StyleMapOp`. */ -function createStyleMapOp(xref, expression, sourceSpan) { - return { - kind: OpKind.StyleMap, - target: xref, - expression, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -/** - * Create a `ClassMapOp`. - */ -function createClassMapOp(xref, expression, sourceSpan) { - return { - kind: OpKind.ClassMap, - target: xref, - expression, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -/** - * Create an `AttributeOp`. - */ -function createAttributeOp(target, name, expression, securityContext, isTemplate, sourceSpan) { - return { - kind: OpKind.Attribute, - target, - name, - expression, - securityContext, - sanitizer: null, - isTemplate, - sourceSpan, - ...TRAIT_DEPENDS_ON_SLOT_CONTEXT, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} -/** - * Create an `AdvanceOp`. - */ -function createAdvanceOp(delta, sourceSpan) { - return { - kind: OpKind.Advance, - delta, - sourceSpan, - ...NEW_OP - }; -} -var _a, _b, _c, _d, _e, _f, _g, _h, _j; -/** - * Check whether a given `o.Expression` is a logical IR expression type. - */ -function isIrExpression(expr) { - return expr instanceof ExpressionBase; -} -/** - * Base type used for all logical IR expressions. - */ -class ExpressionBase extends Expression { - constructor(sourceSpan = null) { - super(null, sourceSpan); - } -} -/** - * Logical expression representing a lexical read of a variable name. - */ -class LexicalReadExpr extends ExpressionBase { - constructor(name) { - super(); - this.name = name; - this.kind = ExpressionKind.LexicalRead; - } - visitExpression(visitor, context) {} - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions() {} - clone() { - return new LexicalReadExpr(this.name); - } -} -/** - * Runtime operation to retrieve the value of a local reference. - */ -class ReferenceExpr extends ExpressionBase { - static #_ = _a = UsesSlotIndex; - constructor(target, offset) { - super(); - this.target = target; - this.offset = offset; - this.kind = ExpressionKind.Reference; - this[_a] = true; - this.slot = null; - } - visitExpression() {} - isEquivalent(e) { - return e instanceof ReferenceExpr && e.target === this.target; - } - isConstant() { - return false; - } - transformInternalExpressions() {} - clone() { - const expr = new ReferenceExpr(this.target, this.offset); - expr.slot = this.slot; - return expr; - } -} -/** - * A reference to the current view context (usually the `ctx` variable in a template function). - */ -class ContextExpr extends ExpressionBase { - constructor(view) { - super(); - this.view = view; - this.kind = ExpressionKind.Context; - } - visitExpression() {} - isEquivalent(e) { - return e instanceof ContextExpr && e.view === this.view; - } - isConstant() { - return false; - } - transformInternalExpressions() {} - clone() { - return new ContextExpr(this.view); - } -} -/** - * Runtime operation to navigate to the next view context in the view hierarchy. - */ -class NextContextExpr extends ExpressionBase { - constructor() { - super(); - this.kind = ExpressionKind.NextContext; - this.steps = 1; - } - visitExpression() {} - isEquivalent(e) { - return e instanceof NextContextExpr && e.steps === this.steps; - } - isConstant() { - return false; - } - transformInternalExpressions() {} - clone() { - const expr = new NextContextExpr(); - expr.steps = this.steps; - return expr; - } -} -/** - * Runtime operation to snapshot the current view context. - * - * The result of this operation can be stored in a variable and later used with the `RestoreView` - * operation. - */ -class GetCurrentViewExpr extends ExpressionBase { - constructor() { - super(); - this.kind = ExpressionKind.GetCurrentView; - } - visitExpression() {} - isEquivalent(e) { - return e instanceof GetCurrentViewExpr; - } - isConstant() { - return false; - } - transformInternalExpressions() {} - clone() { - return new GetCurrentViewExpr(); - } -} -/** - * Runtime operation to restore a snapshotted view. - */ -class RestoreViewExpr extends ExpressionBase { - constructor(view) { - super(); - this.view = view; - this.kind = ExpressionKind.RestoreView; - } - visitExpression(visitor, context) { - if (typeof this.view !== 'number') { - this.view.visitExpression(visitor, context); - } - } - isEquivalent(e) { - if (!(e instanceof RestoreViewExpr) || typeof e.view !== typeof this.view) { - return false; - } - if (typeof this.view === 'number') { - return this.view === e.view; - } else { - return this.view.isEquivalent(e.view); - } - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - if (typeof this.view !== 'number') { - this.view = transformExpressionsInExpression(this.view, transform, flags); - } - } - clone() { - return new RestoreViewExpr(this.view instanceof Expression ? this.view.clone() : this.view); - } -} -/** - * Runtime operation to reset the current view context after `RestoreView`. - */ -class ResetViewExpr extends ExpressionBase { - constructor(expr) { - super(); - this.expr = expr; - this.kind = ExpressionKind.ResetView; - } - visitExpression(visitor, context) { - this.expr.visitExpression(visitor, context); - } - isEquivalent(e) { - return e instanceof ResetViewExpr && this.expr.isEquivalent(e.expr); - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.expr = transformExpressionsInExpression(this.expr, transform, flags); - } - clone() { - return new ResetViewExpr(this.expr.clone()); - } -} -/** - * Read of a variable declared as an `ir.VariableOp` and referenced through its `ir.XrefId`. - */ -class ReadVariableExpr extends ExpressionBase { - constructor(xref) { - super(); - this.xref = xref; - this.kind = ExpressionKind.ReadVariable; - this.name = null; - } - visitExpression() {} - isEquivalent(other) { - return other instanceof ReadVariableExpr && other.xref === this.xref; - } - isConstant() { - return false; - } - transformInternalExpressions() {} - clone() { - const expr = new ReadVariableExpr(this.xref); - expr.name = this.name; - return expr; - } -} -class PureFunctionExpr extends ExpressionBase { - static #_ = (_b = ConsumesVarsTrait, _c = UsesVarOffset); - constructor(expression, args) { - super(); - this.kind = ExpressionKind.PureFunctionExpr; - this[_b] = true; - this[_c] = true; - this.varOffset = null; - /** - * Once extracted to the `ConstantPool`, a reference to the function which defines the computation - * of `body`. - */ - this.fn = null; - this.body = expression; - this.args = args; - } - visitExpression(visitor, context) { - this.body?.visitExpression(visitor, context); - for (const arg of this.args) { - arg.visitExpression(visitor, context); - } - } - isEquivalent(other) { - if (!(other instanceof PureFunctionExpr) || other.args.length !== this.args.length) { - return false; - } - return other.body !== null && this.body !== null && other.body.isEquivalent(this.body) && other.args.every((arg, idx) => arg.isEquivalent(this.args[idx])); - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - if (this.body !== null) { - // TODO: figure out if this is the right flag to pass here. - this.body = transformExpressionsInExpression(this.body, transform, flags | VisitorContextFlag.InChildOperation); - } else if (this.fn !== null) { - this.fn = transformExpressionsInExpression(this.fn, transform, flags); - } - for (let i = 0; i < this.args.length; i++) { - this.args[i] = transformExpressionsInExpression(this.args[i], transform, flags); - } - } - clone() { - const expr = new PureFunctionExpr(this.body?.clone() ?? null, this.args.map(arg => arg.clone())); - expr.fn = this.fn?.clone() ?? null; - expr.varOffset = this.varOffset; - return expr; - } -} -class PureFunctionParameterExpr extends ExpressionBase { - constructor(index) { - super(); - this.index = index; - this.kind = ExpressionKind.PureFunctionParameterExpr; - } - visitExpression() {} - isEquivalent(other) { - return other instanceof PureFunctionParameterExpr && other.index === this.index; - } - isConstant() { - return true; - } - transformInternalExpressions() {} - clone() { - return new PureFunctionParameterExpr(this.index); - } -} -class PipeBindingExpr extends ExpressionBase { - static #_ = (_d = UsesSlotIndex, _e = ConsumesVarsTrait, _f = UsesVarOffset); - constructor(target, name, args) { - super(); - this.target = target; - this.name = name; - this.args = args; - this.kind = ExpressionKind.PipeBinding; - this[_d] = true; - this[_e] = true; - this[_f] = true; - this.slot = null; - this.varOffset = null; - } - visitExpression(visitor, context) { - for (const arg of this.args) { - arg.visitExpression(visitor, context); - } - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - for (let idx = 0; idx < this.args.length; idx++) { - this.args[idx] = transformExpressionsInExpression(this.args[idx], transform, flags); - } - } - clone() { - const r = new PipeBindingExpr(this.target, this.name, this.args.map(a => a.clone())); - r.slot = this.slot; - r.varOffset = this.varOffset; - return r; - } -} -class PipeBindingVariadicExpr extends ExpressionBase { - static #_ = (_g = UsesSlotIndex, _h = ConsumesVarsTrait, _j = UsesVarOffset); - constructor(target, name, args, numArgs) { - super(); - this.target = target; - this.name = name; - this.args = args; - this.numArgs = numArgs; - this.kind = ExpressionKind.PipeBindingVariadic; - this[_g] = true; - this[_h] = true; - this[_j] = true; - this.slot = null; - this.varOffset = null; - } - visitExpression(visitor, context) { - this.args.visitExpression(visitor, context); - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.args = transformExpressionsInExpression(this.args, transform, flags); - } - clone() { - const r = new PipeBindingVariadicExpr(this.target, this.name, this.args.clone(), this.numArgs); - r.slot = this.slot; - r.varOffset = this.varOffset; - return r; - } -} -class SafePropertyReadExpr extends ExpressionBase { - constructor(receiver, name) { - super(); - this.receiver = receiver; - this.name = name; - this.kind = ExpressionKind.SafePropertyRead; - } - // An alias for name, which allows other logic to handle property reads and keyed reads together. - get index() { - return this.name; - } - visitExpression(visitor, context) { - this.receiver.visitExpression(visitor, context); - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.receiver = transformExpressionsInExpression(this.receiver, transform, flags); - } - clone() { - return new SafePropertyReadExpr(this.receiver.clone(), this.name); - } -} -class SafeKeyedReadExpr extends ExpressionBase { - constructor(receiver, index) { - super(); - this.receiver = receiver; - this.index = index; - this.kind = ExpressionKind.SafeKeyedRead; - } - visitExpression(visitor, context) { - this.receiver.visitExpression(visitor, context); - this.index.visitExpression(visitor, context); - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.receiver = transformExpressionsInExpression(this.receiver, transform, flags); - this.index = transformExpressionsInExpression(this.index, transform, flags); - } - clone() { - return new SafeKeyedReadExpr(this.receiver.clone(), this.index.clone()); - } -} -class SafeInvokeFunctionExpr extends ExpressionBase { - constructor(receiver, args) { - super(); - this.receiver = receiver; - this.args = args; - this.kind = ExpressionKind.SafeInvokeFunction; - } - visitExpression(visitor, context) { - this.receiver.visitExpression(visitor, context); - for (const a of this.args) { - a.visitExpression(visitor, context); - } - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.receiver = transformExpressionsInExpression(this.receiver, transform, flags); - for (let i = 0; i < this.args.length; i++) { - this.args[i] = transformExpressionsInExpression(this.args[i], transform, flags); - } - } - clone() { - return new SafeInvokeFunctionExpr(this.receiver.clone(), this.args.map(a => a.clone())); - } -} -class SafeTernaryExpr extends ExpressionBase { - constructor(guard, expr) { - super(); - this.guard = guard; - this.expr = expr; - this.kind = ExpressionKind.SafeTernaryExpr; - } - visitExpression(visitor, context) { - this.guard.visitExpression(visitor, context); - this.expr.visitExpression(visitor, context); - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.guard = transformExpressionsInExpression(this.guard, transform, flags); - this.expr = transformExpressionsInExpression(this.expr, transform, flags); - } - clone() { - return new SafeTernaryExpr(this.guard.clone(), this.expr.clone()); - } -} -class EmptyExpr extends ExpressionBase { - constructor() { - super(...arguments); - this.kind = ExpressionKind.EmptyExpr; - } - visitExpression(visitor, context) {} - isEquivalent(e) { - return e instanceof EmptyExpr; - } - isConstant() { - return true; - } - clone() { - return new EmptyExpr(); - } - transformInternalExpressions() {} -} -class AssignTemporaryExpr extends ExpressionBase { - constructor(expr, xref) { - super(); - this.expr = expr; - this.xref = xref; - this.kind = ExpressionKind.AssignTemporaryExpr; - this.name = null; - } - visitExpression(visitor, context) { - this.expr.visitExpression(visitor, context); - } - isEquivalent() { - return false; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) { - this.expr = transformExpressionsInExpression(this.expr, transform, flags); - } - clone() { - const a = new AssignTemporaryExpr(this.expr.clone(), this.xref); - a.name = this.name; - return a; - } -} -class ReadTemporaryExpr extends ExpressionBase { - constructor(xref) { - super(); - this.xref = xref; - this.kind = ExpressionKind.ReadTemporaryExpr; - this.name = null; - } - visitExpression(visitor, context) {} - isEquivalent() { - return this.xref === this.xref; - } - isConstant() { - return false; - } - transformInternalExpressions(transform, flags) {} - clone() { - const r = new ReadTemporaryExpr(this.xref); - r.name = this.name; - return r; - } -} -class SanitizerExpr extends ExpressionBase { - constructor(fn) { - super(); - this.fn = fn; - this.kind = ExpressionKind.SanitizerExpr; - } - visitExpression(visitor, context) {} - isEquivalent(e) { - return e instanceof SanitizerExpr && e.fn === this.fn; - } - isConstant() { - return true; - } - clone() { - return new SanitizerExpr(this.fn); - } - transformInternalExpressions() {} -} -/** - * Visits all `Expression`s in the AST of `op` with the `visitor` function. - */ -function visitExpressionsInOp(op, visitor) { - transformExpressionsInOp(op, (expr, flags) => { - visitor(expr, flags); - return expr; - }, VisitorContextFlag.None); -} -var VisitorContextFlag; -(function (VisitorContextFlag) { - VisitorContextFlag[VisitorContextFlag["None"] = 0] = "None"; - VisitorContextFlag[VisitorContextFlag["InChildOperation"] = 1] = "InChildOperation"; -})(VisitorContextFlag || (VisitorContextFlag = {})); -function transformExpressionsInInterpolation(interpolation, transform, flags) { - for (let i = 0; i < interpolation.expressions.length; i++) { - interpolation.expressions[i] = transformExpressionsInExpression(interpolation.expressions[i], transform, flags); - } -} -/** - * Transform all `Expression`s in the AST of `op` with the `transform` function. - * - * All such operations will be replaced with the result of applying `transform`, which may be an - * identity transformation. - */ -function transformExpressionsInOp(op, transform, flags) { - switch (op.kind) { - case OpKind.StyleProp: - case OpKind.StyleMap: - case OpKind.ClassProp: - case OpKind.ClassMap: - case OpKind.Binding: - case OpKind.HostProperty: - if (op.expression instanceof Interpolation) { - transformExpressionsInInterpolation(op.expression, transform, flags); - } else { - op.expression = transformExpressionsInExpression(op.expression, transform, flags); - } - break; - case OpKind.Property: - case OpKind.Attribute: - if (op.expression instanceof Interpolation) { - transformExpressionsInInterpolation(op.expression, transform, flags); - } else { - op.expression = transformExpressionsInExpression(op.expression, transform, flags); - } - op.sanitizer = op.sanitizer && transformExpressionsInExpression(op.sanitizer, transform, flags); - break; - case OpKind.InterpolateText: - transformExpressionsInInterpolation(op.interpolation, transform, flags); - break; - case OpKind.Statement: - transformExpressionsInStatement(op.statement, transform, flags); - break; - case OpKind.Variable: - op.initializer = transformExpressionsInExpression(op.initializer, transform, flags); - break; - case OpKind.Listener: - for (const innerOp of op.handlerOps) { - transformExpressionsInOp(innerOp, transform, flags | VisitorContextFlag.InChildOperation); - } - break; - case OpKind.Element: - case OpKind.ElementStart: - case OpKind.ElementEnd: - case OpKind.Container: - case OpKind.ContainerStart: - case OpKind.ContainerEnd: - case OpKind.Template: - case OpKind.DisableBindings: - case OpKind.EnableBindings: - case OpKind.Text: - case OpKind.Pipe: - case OpKind.Advance: - case OpKind.Namespace: - // These operations contain no expressions. - break; - default: - throw new Error(`AssertionError: transformExpressionsInOp doesn't handle ${OpKind[op.kind]}`); - } -} -/** - * Transform all `Expression`s in the AST of `expr` with the `transform` function. - * - * All such operations will be replaced with the result of applying `transform`, which may be an - * identity transformation. - */ -function transformExpressionsInExpression(expr, transform, flags) { - if (expr instanceof ExpressionBase) { - expr.transformInternalExpressions(transform, flags); - } else if (expr instanceof BinaryOperatorExpr) { - expr.lhs = transformExpressionsInExpression(expr.lhs, transform, flags); - expr.rhs = transformExpressionsInExpression(expr.rhs, transform, flags); - } else if (expr instanceof ReadPropExpr) { - expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); - } else if (expr instanceof ReadKeyExpr) { - expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); - expr.index = transformExpressionsInExpression(expr.index, transform, flags); - } else if (expr instanceof WritePropExpr) { - expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); - expr.value = transformExpressionsInExpression(expr.value, transform, flags); - } else if (expr instanceof WriteKeyExpr) { - expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); - expr.index = transformExpressionsInExpression(expr.index, transform, flags); - expr.value = transformExpressionsInExpression(expr.value, transform, flags); - } else if (expr instanceof InvokeFunctionExpr) { - expr.fn = transformExpressionsInExpression(expr.fn, transform, flags); - for (let i = 0; i < expr.args.length; i++) { - expr.args[i] = transformExpressionsInExpression(expr.args[i], transform, flags); - } - } else if (expr instanceof LiteralArrayExpr) { - for (let i = 0; i < expr.entries.length; i++) { - expr.entries[i] = transformExpressionsInExpression(expr.entries[i], transform, flags); - } - } else if (expr instanceof LiteralMapExpr) { - for (let i = 0; i < expr.entries.length; i++) { - expr.entries[i].value = transformExpressionsInExpression(expr.entries[i].value, transform, flags); - } - } else if (expr instanceof ConditionalExpr) { - expr.condition = transformExpressionsInExpression(expr.condition, transform, flags); - expr.trueCase = transformExpressionsInExpression(expr.trueCase, transform, flags); - if (expr.falseCase !== null) { - expr.falseCase = transformExpressionsInExpression(expr.falseCase, transform, flags); - } - } else if (expr instanceof ReadVarExpr || expr instanceof ExternalExpr || expr instanceof LiteralExpr) { - // No action for these types. - } else { - throw new Error(`Unhandled expression kind: ${expr.constructor.name}`); - } - return transform(expr, flags); -} -/** - * Transform all `Expression`s in the AST of `stmt` with the `transform` function. - * - * All such operations will be replaced with the result of applying `transform`, which may be an - * identity transformation. - */ -function transformExpressionsInStatement(stmt, transform, flags) { - if (stmt instanceof ExpressionStatement) { - stmt.expr = transformExpressionsInExpression(stmt.expr, transform, flags); - } else if (stmt instanceof ReturnStatement) { - stmt.value = transformExpressionsInExpression(stmt.value, transform, flags); - } else if (stmt instanceof DeclareVarStmt) { - if (stmt.value !== undefined) { - stmt.value = transformExpressionsInExpression(stmt.value, transform, flags); - } - } else { - throw new Error(`Unhandled statement kind: ${stmt.constructor.name}`); - } -} - -/** - * A linked list of `Op` nodes of a given subtype. - * - * @param OpT specific subtype of `Op` nodes which this list contains. - */ -class OpList { - static #_ = this.nextListId = 0; - constructor() { - /** - * Debug ID of this `OpList` instance. - */ - this.debugListId = OpList.nextListId++; - // OpList uses static head/tail nodes of a special `ListEnd` type. - // This avoids the need for special casing of the first and last list - // elements in all list operations. - this.head = { - kind: OpKind.ListEnd, - next: null, - prev: null, - debugListId: this.debugListId - }; - this.tail = { - kind: OpKind.ListEnd, - next: null, - prev: null, - debugListId: this.debugListId - }; - // Link `head` and `tail` together at the start (list is empty). - this.head.next = this.tail; - this.tail.prev = this.head; - } - /** - * Push a new operation to the tail of the list. - */ - push(op) { - OpList.assertIsNotEnd(op); - OpList.assertIsUnowned(op); - op.debugListId = this.debugListId; - // The old "previous" node (which might be the head, if the list is empty). - const oldLast = this.tail.prev; - // Insert `op` following the old last node. - op.prev = oldLast; - oldLast.next = op; - // Connect `op` with the list tail. - op.next = this.tail; - this.tail.prev = op; - } - /** - * Prepend one or more nodes to the start of the list. - */ - prepend(ops) { - if (ops.length === 0) { - return; - } - for (const op of ops) { - OpList.assertIsNotEnd(op); - OpList.assertIsUnowned(op); - op.debugListId = this.debugListId; - } - const first = this.head.next; - let prev = this.head; - for (const op of ops) { - prev.next = op; - op.prev = prev; - prev = op; - } - prev.next = first; - first.prev = prev; - } - /** - * `OpList` is iterable via the iteration protocol. - * - * It's safe to mutate the part of the list that has already been returned by the iterator, up to - * and including the last operation returned. Mutations beyond that point _may_ be safe, but may - * also corrupt the iteration position and should be avoided. - */ - *[Symbol.iterator]() { - let current = this.head.next; - while (current !== this.tail) { - // Guards against corruption of the iterator state by mutations to the tail of the list during - // iteration. - OpList.assertIsOwned(current, this.debugListId); - const next = current.next; - yield current; - current = next; - } - } - *reversed() { - let current = this.tail.prev; - while (current !== this.head) { - OpList.assertIsOwned(current, this.debugListId); - const prev = current.prev; - yield current; - current = prev; - } - } - /** - * Replace `oldOp` with `newOp` in the list. - */ - static replace(oldOp, newOp) { - OpList.assertIsNotEnd(oldOp); - OpList.assertIsNotEnd(newOp); - OpList.assertIsOwned(oldOp); - OpList.assertIsUnowned(newOp); - newOp.debugListId = oldOp.debugListId; - if (oldOp.prev !== null) { - oldOp.prev.next = newOp; - newOp.prev = oldOp.prev; - } - if (oldOp.next !== null) { - oldOp.next.prev = newOp; - newOp.next = oldOp.next; - } - oldOp.debugListId = null; - oldOp.prev = null; - oldOp.next = null; - } - /** - * Replace `oldOp` with some number of new operations in the list (which may include `oldOp`). - */ - static replaceWithMany(oldOp, newOps) { - if (newOps.length === 0) { - // Replacing with an empty list -> pure removal. - OpList.remove(oldOp); - return; - } - OpList.assertIsNotEnd(oldOp); - OpList.assertIsOwned(oldOp); - const listId = oldOp.debugListId; - oldOp.debugListId = null; - for (const newOp of newOps) { - OpList.assertIsNotEnd(newOp); - // `newOp` might be `oldOp`, but at this point it's been marked as unowned. - OpList.assertIsUnowned(newOp); - } - // It should be safe to reuse `oldOp` in the `newOps` list - maybe you want to sandwich an - // operation between two new ops. - const { - prev: oldPrev, - next: oldNext - } = oldOp; - oldOp.prev = null; - oldOp.next = null; - let prev = oldPrev; - for (const newOp of newOps) { - this.assertIsUnowned(newOp); - newOp.debugListId = listId; - prev.next = newOp; - newOp.prev = prev; - // This _should_ be the case, but set it just in case. - newOp.next = null; - prev = newOp; - } - // At the end of iteration, `prev` holds the last node in the list. - const first = newOps[0]; - const last = prev; - // Replace `oldOp` with the chain `first` -> `last`. - if (oldPrev !== null) { - oldPrev.next = first; - first.prev = oldOp.prev; - } - if (oldNext !== null) { - oldNext.prev = last; - last.next = oldNext; - } - } - /** - * Remove the given node from the list which contains it. - */ - static remove(op) { - OpList.assertIsNotEnd(op); - OpList.assertIsOwned(op); - op.prev.next = op.next; - op.next.prev = op.prev; - // Break any link between the node and this list to safeguard against its usage in future - // operations. - op.debugListId = null; - op.prev = null; - op.next = null; - } - /** - * Insert `op` before `target`. - */ - static insertBefore(op, target) { - OpList.assertIsOwned(target); - if (target.prev === null) { - throw new Error(`AssertionError: illegal operation on list start`); - } - OpList.assertIsNotEnd(op); - OpList.assertIsUnowned(op); - op.debugListId = target.debugListId; - // Just in case. - op.prev = null; - target.prev.next = op; - op.prev = target.prev; - op.next = target; - target.prev = op; - } - /** - * Insert `op` after `target`. - */ - static insertAfter(op, target) { - OpList.assertIsOwned(target); - if (target.next === null) { - throw new Error(`AssertionError: illegal operation on list end`); - } - OpList.assertIsNotEnd(op); - OpList.assertIsUnowned(op); - op.debugListId = target.debugListId; - target.next.prev = op; - op.next = target.next; - op.prev = target; - target.next = op; - } - /** - * Asserts that `op` does not currently belong to a list. - */ - static assertIsUnowned(op) { - if (op.debugListId !== null) { - throw new Error(`AssertionError: illegal operation on owned node: ${OpKind[op.kind]}`); - } - } - /** - * Asserts that `op` currently belongs to a list. If `byList` is passed, `op` is asserted to - * specifically belong to that list. - */ - static assertIsOwned(op, byList) { - if (op.debugListId === null) { - throw new Error(`AssertionError: illegal operation on unowned node: ${OpKind[op.kind]}`); - } else if (byList !== undefined && op.debugListId !== byList) { - throw new Error(`AssertionError: node belongs to the wrong list (expected ${byList}, actual ${op.debugListId})`); - } - } - /** - * Asserts that `op` is not a special `ListEnd` node. - */ - static assertIsNotEnd(op) { - if (op.kind === OpKind.ListEnd) { - throw new Error(`AssertionError: illegal operation on list head or tail`); - } - } -} - -/** - * The set of OpKinds that represent the creation of an element or container - */ -const elementContainerOpKinds = new Set([OpKind.Element, OpKind.ElementStart, OpKind.Container, OpKind.ContainerStart, OpKind.Template]); -/** - * Checks whether the given operation represents the creation of an element or container. - */ -function isElementOrContainerOp(op) { - return elementContainerOpKinds.has(op.kind); -} -/** - * Create an `ElementStartOp`. - */ -function createElementStartOp(tag, xref, namespace, sourceSpan) { - return { - kind: OpKind.ElementStart, - xref, - tag, - attributes: new ElementAttributes(), - localRefs: [], - nonBindable: false, - namespace, - sourceSpan, - ...TRAIT_CONSUMES_SLOT, - ...NEW_OP - }; -} -/** - * Create a `TemplateOp`. - */ -function createTemplateOp(xref, tag, namespace, sourceSpan) { - return { - kind: OpKind.Template, - xref, - attributes: new ElementAttributes(), - tag, - decls: null, - vars: null, - localRefs: [], - nonBindable: false, - namespace, - sourceSpan, - ...TRAIT_CONSUMES_SLOT, - ...NEW_OP - }; -} -/** - * Create an `ElementEndOp`. - */ -function createElementEndOp(xref, sourceSpan) { - return { - kind: OpKind.ElementEnd, - xref, - sourceSpan, - ...NEW_OP - }; -} -function createDisableBindingsOp(xref) { - return { - kind: OpKind.DisableBindings, - xref, - ...NEW_OP - }; -} -function createEnableBindingsOp(xref) { - return { - kind: OpKind.EnableBindings, - xref, - ...NEW_OP - }; -} -/** - * Create a `TextOp`. - */ -function createTextOp(xref, initialValue, sourceSpan) { - return { - kind: OpKind.Text, - xref, - initialValue, - sourceSpan, - ...TRAIT_CONSUMES_SLOT, - ...NEW_OP - }; -} -/** - * Create a `ListenerOp`. - */ -function createListenerOp(target, name, tag) { - return { - kind: OpKind.Listener, - target, - tag, - name, - handlerOps: new OpList(), - handlerFnName: null, - consumesDollarEvent: false, - isAnimationListener: false, - animationPhase: null, - ...NEW_OP, - ...TRAIT_USES_SLOT_INDEX - }; -} -/** - * Create a `ListenerOp` for an animation. - */ -function createListenerOpForAnimation(target, name, animationPhase, tag) { - return { - kind: OpKind.Listener, - target, - tag, - name, - handlerOps: new OpList(), - handlerFnName: null, - consumesDollarEvent: false, - isAnimationListener: true, - animationPhase, - ...NEW_OP, - ...TRAIT_USES_SLOT_INDEX - }; -} -function createPipeOp(xref, name) { - return { - kind: OpKind.Pipe, - xref, - name, - ...NEW_OP, - ...TRAIT_CONSUMES_SLOT - }; -} -/** - * Whether the active namespace is HTML, MathML, or SVG mode. - */ -var Namespace; -(function (Namespace) { - Namespace[Namespace["HTML"] = 0] = "HTML"; - Namespace[Namespace["SVG"] = 1] = "SVG"; - Namespace[Namespace["Math"] = 2] = "Math"; -})(Namespace || (Namespace = {})); -function createNamespaceOp(namespace) { - return { - kind: OpKind.Namespace, - active: namespace, - ...NEW_OP - }; -} -function createHostPropertyOp(name, expression, sourceSpan) { - return { - kind: OpKind.HostProperty, - name, - expression, - sourceSpan, - ...TRAIT_CONSUMES_VARS, - ...NEW_OP - }; -} - -/** - * A compilation unit is compiled into a template function. - * Some example units are views and host bindings. - */ -class CompilationUnit { - constructor(xref) { - this.xref = xref; - /** - * List of creation operations for this view. - * - * Creation operations may internally contain other operations, including update operations. - */ - this.create = new OpList(); - /** - * List of update operations for this view. - */ - this.update = new OpList(); - /** - * Name of the function which will be generated for this unit. - * - * May be `null` if not yet determined. - */ - this.fnName = null; - /** - * Number of variable slots used within this view, or `null` if variables have not yet been - * counted. - */ - this.vars = null; - } - /** - * Iterate over all `ir.Op`s within this view. - * - * Some operations may have child operations, which this iterator will visit. - */ - *ops() { - for (const op of this.create) { - yield op; - if (op.kind === OpKind.Listener) { - for (const listenerOp of op.handlerOps) { - yield listenerOp; - } - } - } - for (const op of this.update) { - yield op; - } - } -} -class HostBindingCompilationJob extends CompilationUnit { - // TODO: Perhaps we should accept a reference to the enclosing component, and get the name from - // there? - constructor(componentName, pool, compatibility) { - super(0); - this.componentName = componentName; - this.pool = pool; - this.compatibility = compatibility; - this.fnSuffix = 'HostBindings'; - this.units = [this]; - this.nextXrefId = 1; - } - get job() { - return this; - } - get root() { - return this; - } - allocateXrefId() { - return this.nextXrefId++; - } -} -/** - * Compilation-in-progress of a whole component's template, including the main template and any - * embedded views or host bindings. - */ -class ComponentCompilationJob { - get units() { - return this.views.values(); - } - constructor(componentName, pool, compatibility) { - this.componentName = componentName; - this.pool = pool; - this.compatibility = compatibility; - this.fnSuffix = 'Template'; - /** - * Tracks the next `ir.XrefId` which can be assigned as template structures are ingested. - */ - this.nextXrefId = 0; - /** - * Map of view IDs to `ViewCompilation`s. - */ - this.views = new Map(); - /** - * Constant expressions used by operations within this component's compilation. - * - * This will eventually become the `consts` array in the component definition. - */ - this.consts = []; - // Allocate the root view. - const root = new ViewCompilationUnit(this, this.allocateXrefId(), null); - this.views.set(root.xref, root); - this.root = root; - } - /** - * Add a `ViewCompilation` for a new embedded view to this compilation. - */ - allocateView(parent) { - const view = new ViewCompilationUnit(this, this.allocateXrefId(), parent); - this.views.set(view.xref, view); - return view; - } - /** - * Generate a new unique `ir.XrefId` in this job. - */ - allocateXrefId() { - return this.nextXrefId++; - } - /** - * Add a constant `o.Expression` to the compilation and return its index in the `consts` array. - */ - addConst(newConst) { - for (let idx = 0; idx < this.consts.length; idx++) { - if (this.consts[idx].isEquivalent(newConst)) { - return idx; - } - } - const idx = this.consts.length; - this.consts.push(newConst); - return idx; - } -} -/** - * Compilation-in-progress of an individual view within a template. - */ -class ViewCompilationUnit extends CompilationUnit { - constructor(job, xref, parent) { - super(xref); - this.job = job; - this.parent = parent; - /** - * Map of declared variables available within this view to the property on the context object - * which they alias. - */ - this.contextVariables = new Map(); - /** - * Number of declaration slots used within this view, or `null` if slots have not yet been - * allocated. - */ - this.decls = null; - } - get compatibility() { - return this.job.compatibility; - } -} - -/** - * Counts the number of variable slots used within each view, and stores that on the view itself, as - * well as propagates it to the `ir.TemplateOp` for embedded views. - */ -function phaseVarCounting(job) { - // First, count the vars used in each view, and update the view-level counter. - for (const unit of job.units) { - let varCount = 0; - for (const op of unit.ops()) { - if (hasConsumesVarsTrait(op)) { - varCount += varsUsedByOp(op); - } - visitExpressionsInOp(op, expr => { - if (!isIrExpression(expr)) { - return; - } - // Some expressions require knowledge of the number of variable slots consumed. - if (hasUsesVarOffsetTrait(expr)) { - expr.varOffset = varCount; - } - if (hasConsumesVarsTrait(expr)) { - varCount += varsUsedByIrExpression(expr); - } - }); - } - unit.vars = varCount; - } - if (job instanceof ComponentCompilationJob) { - // Add var counts for each view to the `ir.TemplateOp` which declares that view (if the view is - // an embedded view). - for (const view of job.views.values()) { - for (const op of view.create) { - if (op.kind !== OpKind.Template) { - continue; - } - const childView = job.views.get(op.xref); - op.vars = childView.vars; - } - } - } -} -/** - * Different operations that implement `ir.UsesVarsTrait` use different numbers of variables, so - * count the variables used by any particular `op`. - */ -function varsUsedByOp(op) { - let slots; - switch (op.kind) { - case OpKind.Property: - case OpKind.HostProperty: - case OpKind.Attribute: - // All of these bindings use 1 variable slot, plus 1 slot for every interpolated expression, - // if any. - slots = 1; - if (op.expression instanceof Interpolation) { - slots += op.expression.expressions.length; - } - return slots; - case OpKind.StyleProp: - case OpKind.ClassProp: - case OpKind.StyleMap: - case OpKind.ClassMap: - // Style & class bindings use 2 variable slots, plus 1 slot for every interpolated expression, - // if any. - slots = 2; - if (op.expression instanceof Interpolation) { - slots += op.expression.expressions.length; - } - return slots; - case OpKind.InterpolateText: - // `ir.InterpolateTextOp`s use a variable slot for each dynamic expression. - return op.interpolation.expressions.length; - default: - throw new Error(`Unhandled op: ${OpKind[op.kind]}`); - } -} -function varsUsedByIrExpression(expr) { - switch (expr.kind) { - case ExpressionKind.PureFunctionExpr: - return 1 + expr.args.length; - case ExpressionKind.PipeBinding: - return 1 + expr.args.length; - case ExpressionKind.PipeBindingVariadic: - return 1 + expr.numArgs; - default: - throw new Error(`AssertionError: unhandled ConsumesVarsTrait expression ${expr.constructor.name}`); - } -} -function phaseAlignPipeVariadicVarOffset(cpl) { - for (const view of cpl.views.values()) { - for (const op of view.update) { - visitExpressionsInOp(op, expr => { - if (!(expr instanceof PipeBindingVariadicExpr)) { - return expr; - } - if (!(expr.args instanceof PureFunctionExpr)) { - return expr; - } - if (expr.varOffset === null || expr.args.varOffset === null) { - throw new Error(`Must run after variable counting`); - } - // The structure of this variadic pipe expression is: - // PipeBindingVariadic(#, Y, PureFunction(X, ...ARGS)) - // Where X and Y are the slot offsets for the variables used by these operations, and Y > X. - // In `TemplateDefinitionBuilder` the PipeBindingVariadic variable slots are allocated - // before the PureFunction slots, which is unusually out-of-order. - // - // To maintain identical output for the tests in question, we adjust the variable offsets of - // these two calls to emulate TDB's behavior. This is not perfect, because the ARGS of the - // PureFunction call may also allocate slots which by TDB's ordering would come after X, and - // we don't account for that. Still, this should be enough to pass the existing pipe tests. - // Put the PipeBindingVariadic vars where the PureFunction vars were previously allocated. - expr.varOffset = expr.args.varOffset; - // Put the PureFunction vars following the PipeBindingVariadic vars. - expr.args.varOffset = expr.varOffset + varsUsedByIrExpression(expr); - }); - } - } -} - -/** - * Find any function calls to `$any`, excluding `this.$any`, and delete them. - */ -function phaseFindAnyCasts(cpl) { - for (const [_, view] of cpl.views) { - for (const op of view.ops()) { - transformExpressionsInOp(op, removeAnys, VisitorContextFlag.None); - } - } -} -function removeAnys(e) { - if (e instanceof InvokeFunctionExpr && e.fn instanceof LexicalReadExpr && e.fn.name === '$any') { - if (e.args.length !== 1) { - throw new Error('The $any builtin function expects exactly one argument.'); - } - return e.args[0]; - } - return e; -} - -/** - * Parses string representation of a style and converts it into object literal. - * - * @param value string representation of style as used in the `style` attribute in HTML. - * Example: `color: red; height: auto`. - * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height', - * 'auto']` - */ -function parse(value) { - // we use a string array here instead of a string map - // because a string-map is not guaranteed to retain the - // order of the entries whereas a string array can be - // constructed in a [key, value, key, value] format. - const styles = []; - let i = 0; - let parenDepth = 0; - let quote = 0 /* Char.QuoteNone */; - let valueStart = 0; - let propStart = 0; - let currentProp = null; - while (i < value.length) { - const token = value.charCodeAt(i++); - switch (token) { - case 40 /* Char.OpenParen */: - parenDepth++; - break; - case 41 /* Char.CloseParen */: - parenDepth--; - break; - case 39 /* Char.QuoteSingle */: - // valueStart needs to be there since prop values don't - // have quotes in CSS - if (quote === 0 /* Char.QuoteNone */) { - quote = 39 /* Char.QuoteSingle */; - } else if (quote === 39 /* Char.QuoteSingle */ && value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */) { - quote = 0 /* Char.QuoteNone */; - } - - break; - case 34 /* Char.QuoteDouble */: - // same logic as above - if (quote === 0 /* Char.QuoteNone */) { - quote = 34 /* Char.QuoteDouble */; - } else if (quote === 34 /* Char.QuoteDouble */ && value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */) { - quote = 0 /* Char.QuoteNone */; - } - - break; - case 58 /* Char.Colon */: - if (!currentProp && parenDepth === 0 && quote === 0 /* Char.QuoteNone */) { - currentProp = hyphenate$1(value.substring(propStart, i - 1).trim()); - valueStart = i; - } - break; - case 59 /* Char.Semicolon */: - if (currentProp && valueStart > 0 && parenDepth === 0 && quote === 0 /* Char.QuoteNone */) { - const styleVal = value.substring(valueStart, i - 1).trim(); - styles.push(currentProp, styleVal); - propStart = i; - valueStart = 0; - currentProp = null; - } - break; - } - } - if (currentProp && valueStart) { - const styleVal = value.slice(valueStart).trim(); - styles.push(currentProp, styleVal); - } - return styles; -} -function hyphenate$1(value) { - return value.replace(/[a-z][A-Z]/g, v => { - return v.charAt(0) + '-' + v.charAt(1); - }).toLowerCase(); -} - -/** - * Gets a map of all elements in the given view by their xref id. - */ -function getElementsByXrefId(view) { - const elements = new Map(); - for (const op of view.create) { - if (!isElementOrContainerOp(op)) { - continue; - } - elements.set(op.xref, op); - } - return elements; -} - -/** - * Find all attribute and binding ops, and collect them into the ElementAttribute structures. - * In cases where no instruction needs to be generated for the attribute or binding, it is removed. - */ -function phaseAttributeExtraction(cpl) { - for (const [_, view] of cpl.views) { - populateElementAttributes(view); - } -} -/** - * Looks up an element in the given map by xref ID. - */ -function lookupElement$2(elements, xref) { - const el = elements.get(xref); - if (el === undefined) { - throw new Error('All attributes should have an element-like target.'); - } - return el; -} -/** - * Populates the ElementAttributes map for the given view, and removes ops for any bindings that do - * not need further processing. - */ -function populateElementAttributes(view) { - const elements = getElementsByXrefId(view); - for (const op of view.ops()) { - let ownerOp; - switch (op.kind) { - case OpKind.Attribute: - extractAttributeOp(view, op, elements); - break; - case OpKind.Property: - if (op.isAnimationTrigger) { - continue; // Don't extract animation properties. - } - - ownerOp = lookupElement$2(elements, op.target); - assertIsElementAttributes(ownerOp.attributes); - ownerOp.attributes.add(op.isTemplate ? BindingKind.Template : BindingKind.Property, op.name, null); - break; - case OpKind.StyleProp: - case OpKind.ClassProp: - ownerOp = lookupElement$2(elements, op.target); - assertIsElementAttributes(ownerOp.attributes); - // Empty StyleProperty and ClassName expressions are treated differently depending on - // compatibility mode. - if (view.compatibility === CompatibilityMode.TemplateDefinitionBuilder && op.expression instanceof EmptyExpr) { - // The old compiler treated empty style bindings as regular bindings for the purpose of - // directive matching. That behavior is incorrect, but we emulate it in compatibility - // mode. - ownerOp.attributes.add(BindingKind.Property, op.name, null); - } - break; - case OpKind.Listener: - if (op.isAnimationListener) { - continue; // Don't extract animation listeners. - } - - ownerOp = lookupElement$2(elements, op.target); - assertIsElementAttributes(ownerOp.attributes); - ownerOp.attributes.add(BindingKind.Property, op.name, null); - break; - } - } -} -function isStringLiteral(expr) { - return expr instanceof LiteralExpr && typeof expr.value === 'string'; -} -function extractAttributeOp(view, op, elements) { - if (op.expression instanceof Interpolation) { - return; - } - const ownerOp = lookupElement$2(elements, op.target); - assertIsElementAttributes(ownerOp.attributes); - if (op.name === 'style' && isStringLiteral(op.expression)) { - // TemplateDefinitionBuilder did not extract style attributes that had a security context. - if (view.compatibility === CompatibilityMode.TemplateDefinitionBuilder && op.securityContext !== SecurityContext.NONE) { - return; - } - // Extract style attributes. - const parsedStyles = parse(op.expression.value); - for (let i = 0; i < parsedStyles.length - 1; i += 2) { - ownerOp.attributes.add(BindingKind.StyleProperty, parsedStyles[i], literal(parsedStyles[i + 1])); - } - OpList.remove(op); - } else { - // The old compiler only extracted string constants, so we emulate that behavior in - // compaitiblity mode, otherwise we optimize more aggressively. - let extractable = view.compatibility === CompatibilityMode.TemplateDefinitionBuilder ? op.expression instanceof LiteralExpr && typeof op.expression.value === 'string' : op.expression.isConstant(); - // We don't need to generate instructions for attributes that can be extracted as consts. - if (extractable) { - ownerOp.attributes.add(op.isTemplate ? BindingKind.Template : BindingKind.Attribute, op.name, op.expression); - OpList.remove(op); - } - } -} - -/** - * Looks up an element in the given map by xref ID. - */ -function lookupElement$1(elements, xref) { - const el = elements.get(xref); - if (el === undefined) { - throw new Error('All attributes should have an element-like target.'); - } - return el; -} -function phaseBindingSpecialization(job) { - const elements = new Map(); - for (const unit of job.units) { - for (const op of unit.create) { - if (!isElementOrContainerOp(op)) { - continue; - } - elements.set(op.xref, op); - } - } - for (const unit of job.units) { - for (const op of unit.ops()) { - if (op.kind !== OpKind.Binding) { - continue; - } - switch (op.bindingKind) { - case BindingKind.Attribute: - if (op.name === 'ngNonBindable') { - OpList.remove(op); - const target = lookupElement$1(elements, op.target); - target.nonBindable = true; - } else { - OpList.replace(op, createAttributeOp(op.target, op.name, op.expression, op.securityContext, op.isTemplate, op.sourceSpan)); - } - break; - case BindingKind.Property: - case BindingKind.Animation: - if (job instanceof HostBindingCompilationJob) { - // TODO: host property animations - OpList.replace(op, createHostPropertyOp(op.name, op.expression, op.sourceSpan)); - } else { - OpList.replace(op, createPropertyOp(op.target, op.name, op.expression, op.bindingKind === BindingKind.Animation, op.securityContext, op.isTemplate, op.sourceSpan)); - } - break; - case BindingKind.I18n: - case BindingKind.ClassName: - case BindingKind.StyleProperty: - throw new Error(`Unhandled binding of kind ${BindingKind[op.bindingKind]}`); - } - } - } -} -const CHAINABLE = new Set([Identifiers.elementStart, Identifiers.elementEnd, Identifiers.element, Identifiers.property, Identifiers.hostProperty, Identifiers.styleProp, Identifiers.attribute, Identifiers.stylePropInterpolate1, Identifiers.stylePropInterpolate2, Identifiers.stylePropInterpolate3, Identifiers.stylePropInterpolate4, Identifiers.stylePropInterpolate5, Identifiers.stylePropInterpolate6, Identifiers.stylePropInterpolate7, Identifiers.stylePropInterpolate8, Identifiers.stylePropInterpolateV, Identifiers.classProp, Identifiers.listener, Identifiers.elementContainerStart, Identifiers.elementContainerEnd, Identifiers.elementContainer, Identifiers.listener]); -/** - * Post-process a reified view compilation and convert sequential calls to chainable instructions - * into chain calls. - * - * For example, two `elementStart` operations in sequence: - * - * ```typescript - * elementStart(0, 'div'); - * elementStart(1, 'span'); - * ``` - * - * Can be called as a chain instead: - * - * ```typescript - * elementStart(0, 'div')(1, 'span'); - * ``` - */ -function phaseChaining(job) { - for (const unit of job.units) { - chainOperationsInList(unit.create); - chainOperationsInList(unit.update); - } -} -function chainOperationsInList(opList) { - let chain = null; - for (const op of opList) { - if (op.kind !== OpKind.Statement || !(op.statement instanceof ExpressionStatement)) { - // This type of statement isn't chainable. - chain = null; - continue; - } - if (!(op.statement.expr instanceof InvokeFunctionExpr) || !(op.statement.expr.fn instanceof ExternalExpr)) { - // This is a statement, but not an instruction-type call, so not chainable. - chain = null; - continue; - } - const instruction = op.statement.expr.fn.value; - if (!CHAINABLE.has(instruction)) { - // This instruction isn't chainable. - chain = null; - continue; - } - // This instruction can be chained. It can either be added on to the previous chain (if - // compatible) or it can be the start of a new chain. - if (chain !== null && chain.instruction === instruction) { - // This instruction can be added onto the previous chain. - const expression = chain.expression.callFn(op.statement.expr.args, op.statement.expr.sourceSpan, op.statement.expr.pure); - chain.expression = expression; - chain.op.statement = expression.toStmt(); - OpList.remove(op); - } else { - // Leave this instruction alone for now, but consider it the start of a new chain. - chain = { - op, - instruction, - expression: op.statement.expr - }; - } - } -} - -/** - * Converts the semantic attributes of element-like operations (elements, templates) into constant - * array expressions, and lifts them into the overall component `consts`. - */ -function phaseConstCollection(cpl) { - for (const [_, view] of cpl.views) { - for (const op of view.create) { - if (op.kind !== OpKind.ElementStart && op.kind !== OpKind.Element && op.kind !== OpKind.Template) { - continue; - } else if (!(op.attributes instanceof ElementAttributes)) { - continue; - } - const attrArray = serializeAttributes(op.attributes); - if (attrArray.entries.length > 0) { - op.attributes = cpl.addConst(attrArray); - } else { - op.attributes = null; - } - } - } -} -function serializeAttributes({ - attributes, - bindings, - classes, - i18n, - projectAs, - styles, - template -}) { - const attrArray = [...attributes]; - if (projectAs !== null) { - attrArray.push(literal(5 /* core.AttributeMarker.ProjectAs */), literal(projectAs)); - } - if (classes.length > 0) { - attrArray.push(literal(1 /* core.AttributeMarker.Classes */), ...classes); - } - if (styles.length > 0) { - attrArray.push(literal(2 /* core.AttributeMarker.Styles */), ...styles); - } - if (bindings.length > 0) { - attrArray.push(literal(3 /* core.AttributeMarker.Bindings */), ...bindings); - } - if (template.length > 0) { - attrArray.push(literal(4 /* core.AttributeMarker.Template */), ...template); - } - if (i18n.length > 0) { - attrArray.push(literal(6 /* core.AttributeMarker.I18n */), ...i18n); - } - return literalArr(attrArray); -} -const REPLACEMENTS = new Map([[OpKind.ElementEnd, [OpKind.ElementStart, OpKind.Element]], [OpKind.ContainerEnd, [OpKind.ContainerStart, OpKind.Container]]]); -/** - * Replace sequences of mergable elements (e.g. `ElementStart` and `ElementEnd`) with a consolidated - * element (e.g. `Element`). - */ -function phaseEmptyElements(cpl) { - for (const [_, view] of cpl.views) { - for (const op of view.create) { - const opReplacements = REPLACEMENTS.get(op.kind); - if (opReplacements === undefined) { - continue; - } - const [startKind, mergedKind] = opReplacements; - if (op.prev !== null && op.prev.kind === startKind) { - // Transmute the start instruction to the merged version. This is safe as they're designed - // to be identical apart from the `kind`. - op.prev.kind = mergedKind; - // Remove the end instruction. - OpList.remove(op); - } - } - } -} - -/** - * Finds all unresolved safe read expressions, and converts them into the appropriate output AST - * reads, guarded by null checks. - */ -function phaseExpandSafeReads(job) { - for (const unit of job.units) { - for (const op of unit.ops()) { - transformExpressionsInOp(op, e => safeTransform(e, { - job - }), VisitorContextFlag.None); - transformExpressionsInOp(op, ternaryTransform, VisitorContextFlag.None); - } - } -} -// A lookup set of all the expression kinds that require a temporary variable to be generated. -const requiresTemporary = [InvokeFunctionExpr, LiteralArrayExpr, LiteralMapExpr, SafeInvokeFunctionExpr, PipeBindingExpr].map(e => e.constructor.name); -function needsTemporaryInSafeAccess(e) { - // TODO: We probably want to use an expression visitor to recursively visit all descendents. - // However, that would potentially do a lot of extra work (because it cannot short circuit), so we - // implement the logic ourselves for now. - if (e instanceof UnaryOperatorExpr) { - return needsTemporaryInSafeAccess(e.expr); - } else if (e instanceof BinaryOperatorExpr) { - return needsTemporaryInSafeAccess(e.lhs) || needsTemporaryInSafeAccess(e.rhs); - } else if (e instanceof ConditionalExpr) { - if (e.falseCase && needsTemporaryInSafeAccess(e.falseCase)) return true; - return needsTemporaryInSafeAccess(e.condition) || needsTemporaryInSafeAccess(e.trueCase); - } else if (e instanceof NotExpr) { - return needsTemporaryInSafeAccess(e.condition); - } else if (e instanceof AssignTemporaryExpr) { - return needsTemporaryInSafeAccess(e.expr); - } else if (e instanceof ReadPropExpr) { - return needsTemporaryInSafeAccess(e.receiver); - } else if (e instanceof ReadKeyExpr) { - return needsTemporaryInSafeAccess(e.receiver) || needsTemporaryInSafeAccess(e.index); - } - // TODO: Switch to a method which is exhaustive of newly added expression subtypes. - return e instanceof InvokeFunctionExpr || e instanceof LiteralArrayExpr || e instanceof LiteralMapExpr || e instanceof SafeInvokeFunctionExpr || e instanceof PipeBindingExpr; -} -function temporariesIn(e) { - const temporaries = new Set(); - // TODO: Although it's not currently supported by the transform helper, we should be able to - // short-circuit exploring the tree to do less work. In particular, we don't have to penetrate - // into the subexpressions of temporary assignments. - transformExpressionsInExpression(e, e => { - if (e instanceof AssignTemporaryExpr) { - temporaries.add(e.xref); - } - return e; - }, VisitorContextFlag.None); - return temporaries; -} -function eliminateTemporaryAssignments(e, tmps, ctx) { - // TODO: We can be more efficient than the transform helper here. We don't need to visit any - // descendents of temporary assignments. - transformExpressionsInExpression(e, e => { - if (e instanceof AssignTemporaryExpr && tmps.has(e.xref)) { - const read = new ReadTemporaryExpr(e.xref); - // `TemplateDefinitionBuilder` has the (accidental?) behavior of generating assignments of - // temporary variables to themselves. This happens because some subexpression that the - // temporary refers to, possibly through nested temporaries, has a function call. We copy that - // behavior here. - return ctx.job.compatibility === CompatibilityMode.TemplateDefinitionBuilder ? new AssignTemporaryExpr(read, read.xref) : read; - } - return e; - }, VisitorContextFlag.None); - return e; -} -/** - * Creates a safe ternary guarded by the input expression, and with a body generated by the provided - * callback on the input expression. Generates a temporary variable assignment if needed, and - * deduplicates nested temporary assignments if needed. - */ -function safeTernaryWithTemporary(guard, body, ctx) { - let result; - if (needsTemporaryInSafeAccess(guard)) { - const xref = ctx.job.allocateXrefId(); - result = [new AssignTemporaryExpr(guard, xref), new ReadTemporaryExpr(xref)]; - } else { - result = [guard, guard.clone()]; - // Consider an expression like `a?.[b?.c()]?.d`. The `b?.c()` will be transformed first, - // introducing a temporary assignment into the key. Then, as part of expanding the `?.d`. That - // assignment will be duplicated into both the guard and expression sides. We de-duplicate it, - // by transforming it from an assignment into a read on the expression side. - eliminateTemporaryAssignments(result[1], temporariesIn(result[0]), ctx); - } - return new SafeTernaryExpr(result[0], body(result[1])); -} -function isSafeAccessExpression(e) { - return e instanceof SafePropertyReadExpr || e instanceof SafeKeyedReadExpr || e instanceof SafeInvokeFunctionExpr; -} -function isUnsafeAccessExpression(e) { - return e instanceof ReadPropExpr || e instanceof ReadKeyExpr || e instanceof InvokeFunctionExpr; -} -function isAccessExpression(e) { - return isSafeAccessExpression(e) || isUnsafeAccessExpression(e); -} -function deepestSafeTernary(e) { - if (isAccessExpression(e) && e.receiver instanceof SafeTernaryExpr) { - let st = e.receiver; - while (st.expr instanceof SafeTernaryExpr) { - st = st.expr; - } - return st; - } - return null; -} -// TODO: When strict compatibility with TemplateDefinitionBuilder is not required, we can use `&&` -// instead to save some code size. -function safeTransform(e, ctx) { - if (!isAccessExpression(e)) { - return e; - } - const dst = deepestSafeTernary(e); - if (dst) { - if (e instanceof InvokeFunctionExpr) { - dst.expr = dst.expr.callFn(e.args); - return e.receiver; - } - if (e instanceof ReadPropExpr) { - dst.expr = dst.expr.prop(e.name); - return e.receiver; - } - if (e instanceof ReadKeyExpr) { - dst.expr = dst.expr.key(e.index); - return e.receiver; - } - if (e instanceof SafeInvokeFunctionExpr) { - dst.expr = safeTernaryWithTemporary(dst.expr, r => r.callFn(e.args), ctx); - return e.receiver; - } - if (e instanceof SafePropertyReadExpr) { - dst.expr = safeTernaryWithTemporary(dst.expr, r => r.prop(e.name), ctx); - return e.receiver; - } - if (e instanceof SafeKeyedReadExpr) { - dst.expr = safeTernaryWithTemporary(dst.expr, r => r.key(e.index), ctx); - return e.receiver; - } - } else { - if (e instanceof SafeInvokeFunctionExpr) { - return safeTernaryWithTemporary(e.receiver, r => r.callFn(e.args), ctx); - } - if (e instanceof SafePropertyReadExpr) { - return safeTernaryWithTemporary(e.receiver, r => r.prop(e.name), ctx); - } - if (e instanceof SafeKeyedReadExpr) { - return safeTernaryWithTemporary(e.receiver, r => r.key(e.index), ctx); - } - } - return e; -} -function ternaryTransform(e) { - if (!(e instanceof SafeTernaryExpr)) { - return e; - } - return new ConditionalExpr(new BinaryOperatorExpr(BinaryOperator.Equals, e.guard, NULL_EXPR), NULL_EXPR, e.expr); -} - -/** - * Generate `ir.AdvanceOp`s in between `ir.UpdateOp`s that ensure the runtime's implicit slot - * context will be advanced correctly. - */ -function phaseGenerateAdvance(cpl) { - for (const [_, view] of cpl.views) { - // First build a map of all of the declarations in the view that have assigned slots. - const slotMap = new Map(); - for (const op of view.create) { - if (!hasConsumesSlotTrait(op)) { - continue; - } else if (op.slot === null) { - throw new Error(`AssertionError: expected slots to have been allocated before generating advance() calls`); - } - slotMap.set(op.xref, op.slot); - } - // Next, step through the update operations and generate `ir.AdvanceOp`s as required to ensure - // the runtime's implicit slot counter will be set to the correct slot before executing each - // update operation which depends on it. - // - // To do that, we track what the runtime's slot counter will be through the update operations. - let slotContext = 0; - for (const op of view.update) { - if (!hasDependsOnSlotContextTrait(op)) { - // `op` doesn't depend on the slot counter, so it can be skipped. - continue; - } else if (!slotMap.has(op.target)) { - // We expect ops that _do_ depend on the slot counter to point at declarations that exist in - // the `slotMap`. - throw new Error(`AssertionError: reference to unknown slot for var ${op.target}`); - } - const slot = slotMap.get(op.target); - // Does the slot counter need to be adjusted? - if (slotContext !== slot) { - // If so, generate an `ir.AdvanceOp` to advance the counter. - const delta = slot - slotContext; - if (delta < 0) { - throw new Error(`AssertionError: slot counter should never need to move backwards`); - } - OpList.insertBefore(createAdvanceOp(delta, op.sourceSpan), op); - slotContext = slot; - } - } - } -} - -/** - * Generate a preamble sequence for each view creation block and listener function which declares - * any variables that be referenced in other operations in the block. - * - * Variables generated include: - * * a saved view context to be used to restore the current view in event listeners. - * * the context of the restored view within event listener handlers. - * * context variables from the current view as well as all parent views (including the root - * context if needed). - * * local references from elements within the current view and any lexical parents. - * - * Variables are generated here unconditionally, and may optimized away in future operations if it - * turns out their values (and any side effects) are unused. - */ -function phaseGenerateVariables(cpl) { - recursivelyProcessView(cpl.root, /* there is no parent scope for the root view */null); -} -/** - * Process the given `ViewCompilation` and generate preambles for it and any listeners that it - * declares. - * - * @param `parentScope` a scope extracted from the parent view which captures any variables which - * should be inherited by this view. `null` if the current view is the root view. - */ -function recursivelyProcessView(view, parentScope) { - // Extract a `Scope` from this view. - const scope = getScopeForView(view, parentScope); - for (const op of view.create) { - switch (op.kind) { - case OpKind.Template: - // Descend into child embedded views. - recursivelyProcessView(view.job.views.get(op.xref), scope); - break; - case OpKind.Listener: - // Prepend variables to listener handler functions. - op.handlerOps.prepend(generateVariablesInScopeForView(view, scope)); - break; - } - } - // Prepend the declarations for all available variables in scope to the `update` block. - const preambleOps = generateVariablesInScopeForView(view, scope); - view.update.prepend(preambleOps); -} -/** - * Process a view and generate a `Scope` representing the variables available for reference within - * that view. - */ -function getScopeForView(view, parent) { - const scope = { - view: view.xref, - viewContextVariable: { - kind: SemanticVariableKind.Context, - name: null, - view: view.xref - }, - contextVariables: new Map(), - references: [], - parent - }; - for (const identifier of view.contextVariables.keys()) { - scope.contextVariables.set(identifier, { - kind: SemanticVariableKind.Identifier, - name: null, - identifier - }); - } - for (const op of view.create) { - switch (op.kind) { - case OpKind.Element: - case OpKind.ElementStart: - case OpKind.Template: - if (!Array.isArray(op.localRefs)) { - throw new Error(`AssertionError: expected localRefs to be an array`); - } - // Record available local references from this element. - for (let offset = 0; offset < op.localRefs.length; offset++) { - scope.references.push({ - name: op.localRefs[offset].name, - targetId: op.xref, - offset, - variable: { - kind: SemanticVariableKind.Identifier, - name: null, - identifier: op.localRefs[offset].name - } - }); - } - break; - } - } - return scope; -} -/** - * Generate declarations for all variables that are in scope for a given view. - * - * This is a recursive process, as views inherit variables available from their parent view, which - * itself may have inherited variables, etc. - */ -function generateVariablesInScopeForView(view, scope) { - const newOps = []; - if (scope.view !== view.xref) { - // Before generating variables for a parent view, we need to switch to the context of the parent - // view with a `nextContext` expression. This context switching operation itself declares a - // variable, because the context of the view may be referenced directly. - newOps.push(createVariableOp(view.job.allocateXrefId(), scope.viewContextVariable, new NextContextExpr())); - } - // Add variables for all context variables available in this scope's view. - for (const [name, value] of view.job.views.get(scope.view).contextVariables) { - newOps.push(createVariableOp(view.job.allocateXrefId(), scope.contextVariables.get(name), new ReadPropExpr(new ContextExpr(scope.view), value))); - } - // Add variables for all local references declared for elements in this scope. - for (const ref of scope.references) { - newOps.push(createVariableOp(view.job.allocateXrefId(), ref.variable, new ReferenceExpr(ref.targetId, ref.offset))); - } - if (scope.parent !== null) { - // Recursively add variables from the parent scope. - newOps.push(...generateVariablesInScopeForView(view, scope.parent)); - } - return newOps; -} -const STYLE_DOT = 'style.'; -const CLASS_DOT = 'class.'; -function phaseHostStylePropertyParsing(job) { - for (const op of job.update) { - if (op.kind !== OpKind.Binding) { - continue; - } - if (op.name.startsWith(STYLE_DOT)) { - op.bindingKind = BindingKind.StyleProperty; - op.name = op.name.substring(STYLE_DOT.length); - if (isCssCustomProperty$1(op.name)) { - op.name = hyphenate(op.name); - } - const { - property, - suffix - } = parseProperty$1(op.name); - op.name = property; - op.unit = suffix; - } else if (op.name.startsWith('style!')) { - // TODO: do we only transform !important? - op.name = 'style'; - } else if (op.name.startsWith(CLASS_DOT)) { - op.bindingKind = BindingKind.ClassName; - op.name = parseProperty$1(op.name.substring(CLASS_DOT.length)).property; - } - } -} -/** - * Checks whether property name is a custom CSS property. - * See: https://www.w3.org/TR/css-variables-1 - */ -function isCssCustomProperty$1(name) { - return name.startsWith('--'); -} -function hyphenate(value) { - return value.replace(/[a-z][A-Z]/g, v => { - return v.charAt(0) + '-' + v.charAt(1); - }).toLowerCase(); -} -function parseProperty$1(name) { - const overrideIndex = name.indexOf('!important'); - if (overrideIndex !== -1) { - name = overrideIndex > 0 ? name.substring(0, overrideIndex) : ''; - } - let suffix = null; - let property = name; - const unitIndex = name.lastIndexOf('.'); - if (unitIndex > 0) { - suffix = name.slice(unitIndex + 1); - property = name.substring(0, unitIndex); - } - return { - property, - suffix - }; -} - -/** - * Lifts local reference declarations on element-like structures within each view into an entry in - * the `consts` array for the whole component. - */ -function phaseLocalRefs(cpl) { - for (const view of cpl.views.values()) { - for (const op of view.create) { - switch (op.kind) { - case OpKind.ElementStart: - case OpKind.Element: - case OpKind.Template: - if (!Array.isArray(op.localRefs)) { - throw new Error(`AssertionError: expected localRefs to be an array still`); - } - op.numSlotsUsed += op.localRefs.length; - if (op.localRefs.length > 0) { - const localRefs = serializeLocalRefs(op.localRefs); - op.localRefs = cpl.addConst(localRefs); - } else { - op.localRefs = null; - } - break; - } - } - } -} -function serializeLocalRefs(refs) { - const constRefs = []; - for (const ref of refs) { - constRefs.push(literal(ref.name), literal(ref.target)); - } - return literalArr(constRefs); -} - -/** - * Change namespaces between HTML, SVG and MathML, depending on the next element. - */ -function phaseNamespace(job) { - for (const [_, view] of job.views) { - let activeNamespace = Namespace.HTML; - for (const op of view.create) { - if (op.kind !== OpKind.Element && op.kind !== OpKind.ElementStart) { - continue; - } - if (op.namespace !== activeNamespace) { - OpList.insertBefore(createNamespaceOp(op.namespace), op); - activeNamespace = op.namespace; - } - } - } -} -const BINARY_OPERATORS = new Map([['&&', BinaryOperator.And], ['>', BinaryOperator.Bigger], ['>=', BinaryOperator.BiggerEquals], ['&', BinaryOperator.BitwiseAnd], ['/', BinaryOperator.Divide], ['==', BinaryOperator.Equals], ['===', BinaryOperator.Identical], ['<', BinaryOperator.Lower], ['<=', BinaryOperator.LowerEquals], ['-', BinaryOperator.Minus], ['%', BinaryOperator.Modulo], ['*', BinaryOperator.Multiply], ['!=', BinaryOperator.NotEquals], ['!==', BinaryOperator.NotIdentical], ['??', BinaryOperator.NullishCoalesce], ['||', BinaryOperator.Or], ['+', BinaryOperator.Plus]]); -const NAMESPACES = new Map([['svg', Namespace.SVG], ['math', Namespace.Math]]); -function namespaceForKey(namespacePrefixKey) { - if (namespacePrefixKey === null) { - return Namespace.HTML; - } - return NAMESPACES.get(namespacePrefixKey) ?? Namespace.HTML; -} -function keyForNamespace(namespace) { - for (const [k, n] of NAMESPACES.entries()) { - if (n === namespace) { - return k; - } - } - return null; // No namespace prefix for HTML -} - -function prefixWithNamespace(strippedTag, namespace) { - if (namespace === Namespace.HTML) { - return strippedTag; - } - return `:${keyForNamespace(namespace)}:${strippedTag}`; -} - -/** - * Generate names for functions and variables across all views. - * - * This includes propagating those names into any `ir.ReadVariableExpr`s of those variables, so that - * the reads can be emitted correctly. - */ -function phaseNaming(cpl) { - addNamesToView(cpl.root, cpl.componentName, { - index: 0 - }, cpl.compatibility === CompatibilityMode.TemplateDefinitionBuilder); -} -function addNamesToView(unit, baseName, state, compatibility) { - if (unit.fnName === null) { - unit.fnName = sanitizeIdentifier(`${baseName}_${unit.job.fnSuffix}`); - } - // Keep track of the names we assign to variables in the view. We'll need to propagate these - // into reads of those variables afterwards. - const varNames = new Map(); - for (const op of unit.ops()) { - switch (op.kind) { - case OpKind.Property: - if (op.isAnimationTrigger) { - op.name = '@' + op.name; - } - break; - case OpKind.Listener: - if (op.handlerFnName === null) { - if (op.slot === null) { - throw new Error(`Expected a slot to be assigned`); - } - const safeTagName = op.tag.replace('-', '_'); - if (op.isAnimationListener) { - op.handlerFnName = sanitizeIdentifier(`${unit.fnName}_${safeTagName}_animation_${op.name}_${op.animationPhase}_${op.slot}_listener`); - op.name = `@${op.name}.${op.animationPhase}`; - } else { - op.handlerFnName = sanitizeIdentifier(`${unit.fnName}_${safeTagName}_${op.name}_${op.slot}_listener`); - } - } - break; - case OpKind.Variable: - varNames.set(op.xref, getVariableName(op.variable, state)); - break; - case OpKind.Template: - if (!(unit instanceof ViewCompilationUnit)) { - throw new Error(`AssertionError: must be compiling a component`); - } - const childView = unit.job.views.get(op.xref); - if (op.slot === null) { - throw new Error(`Expected slot to be assigned`); - } - addNamesToView(childView, `${baseName}_${prefixWithNamespace(op.tag, op.namespace)}_${op.slot}`, state, compatibility); - break; - case OpKind.StyleProp: - op.name = normalizeStylePropName(op.name); - if (compatibility) { - op.name = stripImportant(op.name); - } - break; - case OpKind.ClassProp: - if (compatibility) { - op.name = stripImportant(op.name); - } - break; - } - } - // Having named all variables declared in the view, now we can push those names into the - // `ir.ReadVariableExpr` expressions which represent reads of those variables. - for (const op of unit.ops()) { - visitExpressionsInOp(op, expr => { - if (!(expr instanceof ReadVariableExpr) || expr.name !== null) { - return; - } - if (!varNames.has(expr.xref)) { - throw new Error(`Variable ${expr.xref} not yet named`); - } - expr.name = varNames.get(expr.xref); - }); - } -} -function getVariableName(variable, state) { - if (variable.name === null) { - switch (variable.kind) { - case SemanticVariableKind.Context: - variable.name = `ctx_r${state.index++}`; - break; - case SemanticVariableKind.Identifier: - variable.name = `${variable.identifier}_${state.index++}`; - break; - default: - variable.name = `_r${state.index++}`; - break; - } - } - return variable.name; -} -/** - * Normalizes a style prop name by hyphenating it (unless its a CSS variable). - */ -function normalizeStylePropName(name) { - return name.startsWith('--') ? name : hyphenate$1(name); -} -/** - * Strips `!important` out of the given style or class name. - */ -function stripImportant(name) { - const importantIndex = name.indexOf('!important'); - if (importantIndex > -1) { - return name.substring(0, importantIndex); - } - return name; -} - -/** - * Merges logically sequential `NextContextExpr` operations. - * - * `NextContextExpr` can be referenced repeatedly, "popping" the runtime's context stack each time. - * When two such expressions appear back-to-back, it's possible to merge them together into a single - * `NextContextExpr` that steps multiple contexts. This merging is possible if all conditions are - * met: - * - * * The result of the `NextContextExpr` that's folded into the subsequent one is not stored (that - * is, the call is purely side-effectful). - * * No operations in between them uses the implicit context. - */ -function phaseMergeNextContext(cpl) { - for (const view of cpl.views.values()) { - for (const op of view.create) { - if (op.kind === OpKind.Listener) { - mergeNextContextsInOps(op.handlerOps); - } - } - mergeNextContextsInOps(view.update); - } -} -function mergeNextContextsInOps(ops) { - for (const op of ops) { - // Look for a candidate operation to maybe merge. - if (op.kind !== OpKind.Statement || !(op.statement instanceof ExpressionStatement) || !(op.statement.expr instanceof NextContextExpr)) { - continue; - } - const mergeSteps = op.statement.expr.steps; - // Try to merge this `ir.NextContextExpr`. - let tryToMerge = true; - for (let candidate = op.next; candidate.kind !== OpKind.ListEnd && tryToMerge; candidate = candidate.next) { - visitExpressionsInOp(candidate, (expr, flags) => { - if (!isIrExpression(expr)) { - return expr; - } - if (!tryToMerge) { - // Either we've already merged, or failed to merge. - return; - } - if (flags & VisitorContextFlag.InChildOperation) { - // We cannot merge into child operations. - return; - } - switch (expr.kind) { - case ExpressionKind.NextContext: - // Merge the previous `ir.NextContextExpr` into this one. - expr.steps += mergeSteps; - OpList.remove(op); - tryToMerge = false; - break; - case ExpressionKind.GetCurrentView: - case ExpressionKind.Reference: - // Can't merge past a dependency on the context. - tryToMerge = false; - break; - } - }); - } - } -} -const CONTAINER_TAG = 'ng-container'; -/** - * Replace an `Element` or `ElementStart` whose tag is `ng-container` with a specific op. - */ -function phaseNgContainer(cpl) { - for (const [_, view] of cpl.views) { - const updatedElementXrefs = new Set(); - for (const op of view.create) { - if (op.kind === OpKind.ElementStart && op.tag === CONTAINER_TAG) { - // Transmute the `ElementStart` instruction to `ContainerStart`. - op.kind = OpKind.ContainerStart; - updatedElementXrefs.add(op.xref); - } - if (op.kind === OpKind.ElementEnd && updatedElementXrefs.has(op.xref)) { - // This `ElementEnd` is associated with an `ElementStart` we already transmuted. - op.kind = OpKind.ContainerEnd; - } - } - } -} - -/** - * Transforms special-case bindings with 'style' or 'class' in their names. Must run before the - * main binding specialization pass. - */ -function phaseNoListenersOnTemplates(job) { - for (const unit of job.units) { - let inTemplate = false; - for (const op of unit.create) { - switch (op.kind) { - case OpKind.Template: - inTemplate = true; - break; - case OpKind.ElementStart: - case OpKind.Element: - case OpKind.ContainerStart: - case OpKind.Container: - inTemplate = false; - break; - case OpKind.Listener: - if (inTemplate) { - OpList.remove(op); - } - break; - } - } - } -} - -/** - * Looks up an element in the given map by xref ID. - */ -function lookupElement(elements, xref) { - const el = elements.get(xref); - if (el === undefined) { - throw new Error('All attributes should have an element-like target.'); - } - return el; -} -/** - * When a container is marked with `ngNonBindable`, the non-bindable characteristic also applies to - * all descendants of that container. Therefore, we must emit `disableBindings` and `enableBindings` - * instructions for every such container. - */ -function phaseNonbindable(job) { - const elements = new Map(); - for (const view of job.units) { - for (const op of view.create) { - if (!isElementOrContainerOp(op)) { - continue; - } - elements.set(op.xref, op); - } - } - for (const [_, view] of job.views) { - for (const op of view.create) { - if ((op.kind === OpKind.ElementStart || op.kind === OpKind.ContainerStart) && op.nonBindable) { - OpList.insertAfter(createDisableBindingsOp(op.xref), op); - } - if ((op.kind === OpKind.ElementEnd || op.kind === OpKind.ContainerEnd) && lookupElement(elements, op.xref).nonBindable) { - OpList.insertBefore(createEnableBindingsOp(op.xref), op); - } - } - } -} -function phaseNullishCoalescing(job) { - for (const unit of job.units) { - for (const op of unit.ops()) { - transformExpressionsInOp(op, expr => { - if (!(expr instanceof BinaryOperatorExpr) || expr.operator !== BinaryOperator.NullishCoalesce) { - return expr; - } - const assignment = new AssignTemporaryExpr(expr.lhs.clone(), job.allocateXrefId()); - const read = new ReadTemporaryExpr(assignment.xref); - // TODO: When not in compatibility mode for TemplateDefinitionBuilder, we can just emit - // `t != null` instead of including an undefined check as well. - return new ConditionalExpr(new BinaryOperatorExpr(BinaryOperator.And, new BinaryOperatorExpr(BinaryOperator.NotIdentical, assignment, NULL_EXPR), new BinaryOperatorExpr(BinaryOperator.NotIdentical, read, new LiteralExpr(undefined))), read.clone(), expr.rhs); - }, VisitorContextFlag.None); - } - } -} -function phasePipeCreation(cpl) { - for (const view of cpl.views.values()) { - processPipeBindingsInView(view); - } -} -function processPipeBindingsInView(view) { - for (const updateOp of view.update) { - visitExpressionsInOp(updateOp, (expr, flags) => { - if (!isIrExpression(expr)) { - return; - } - if (expr.kind !== ExpressionKind.PipeBinding) { - return; - } - if (flags & VisitorContextFlag.InChildOperation) { - throw new Error(`AssertionError: pipe bindings should not appear in child expressions`); - } - if (!hasDependsOnSlotContextTrait(updateOp)) { - throw new Error(`AssertionError: pipe binding associated with non-slot operation ${OpKind[updateOp.kind]}`); - } - addPipeToCreationBlock(view, updateOp.target, expr); - }); - } -} -function addPipeToCreationBlock(view, afterTargetXref, binding) { - // Find the appropriate point to insert the Pipe creation operation. - // We're looking for `afterTargetXref` (and also want to insert after any other pipe operations - // which might be beyond it). - for (let op = view.create.head.next; op.kind !== OpKind.ListEnd; op = op.next) { - if (!hasConsumesSlotTrait(op)) { - continue; - } - if (op.xref !== afterTargetXref) { - continue; - } - // We've found a tentative insertion point; however, we also want to skip past any _other_ pipe - // operations present. - while (op.next.kind === OpKind.Pipe) { - op = op.next; - } - const pipe = createPipeOp(binding.target, binding.name); - OpList.insertBefore(pipe, op.next); - // This completes adding the pipe to the creation block. - return; - } - // At this point, we've failed to add the pipe to the creation block. - throw new Error(`AssertionError: unable to find insertion point for pipe ${binding.name}`); -} -function phasePipeVariadic(cpl) { - for (const view of cpl.views.values()) { - for (const op of view.update) { - transformExpressionsInOp(op, expr => { - if (!(expr instanceof PipeBindingExpr)) { - return expr; - } - // Pipes are variadic if they have more than 4 arguments. - if (expr.args.length <= 4) { - return expr; - } - return new PipeBindingVariadicExpr(expr.target, expr.name, literalArr(expr.args), expr.args.length); - }, VisitorContextFlag.None); - } - } -} -function kindTest(kind) { - return op => op.kind === kind; -} -/** - * Defines the groups based on `OpKind` that ops will be divided into. Ops will be collected into - * groups, then optionally transformed, before recombining the groups in the order defined here. - */ -const ORDERING = [{ - test: kindTest(OpKind.StyleMap), - transform: keepLast -}, { - test: kindTest(OpKind.ClassMap), - transform: keepLast -}, { - test: kindTest(OpKind.StyleProp) -}, { - test: kindTest(OpKind.ClassProp) -}, { - test: op => (op.kind === OpKind.Property || op.kind === OpKind.HostProperty) && op.expression instanceof Interpolation -}, { - test: op => (op.kind === OpKind.Property || op.kind === OpKind.HostProperty) && !(op.expression instanceof Interpolation) -}, { - test: kindTest(OpKind.Attribute) -}]; -/** - * The set of all op kinds we handle in the reordering phase. - */ -const handledOpKinds = new Set([OpKind.StyleMap, OpKind.ClassMap, OpKind.StyleProp, OpKind.ClassProp, OpKind.Property, OpKind.HostProperty, OpKind.Attribute]); -/** - * Reorders property and attribute ops according to the following ordering: - * 1. styleMap & styleMapInterpolate (drops all but the last op in the group) - * 2. classMap & classMapInterpolate (drops all but the last op in the group) - * 3. styleProp & stylePropInterpolate (ordering preserved within group) - * 4. classProp (ordering preserved within group) - * 5. propertyInterpolate (ordering preserved within group) - * 6. property (ordering preserved within group) - * 7. attribute & attributeInterpolate (ordering preserve within group) - */ -function phasePropertyOrdering(cpl) { - for (const unit of cpl.units) { - let opsToOrder = []; - for (const op of unit.update) { - if (handledOpKinds.has(op.kind)) { - // Pull out ops that need o be ordered. - opsToOrder.push(op); - OpList.remove(op); - } else { - // When we encounter an op that shouldn't be reordered, put the ones we've pulled so far - // back in the correct order. - for (const orderedOp of reorder(opsToOrder)) { - OpList.insertBefore(orderedOp, op); - } - opsToOrder = []; - } - } - // If we still have ops pulled at the end, put them back in the correct order. - for (const orderedOp of reorder(opsToOrder)) { - unit.update.push(orderedOp); - } - } -} -/** - * Reorders the given list of ops according to the ordering defined by `ORDERING`. - */ -function reorder(ops) { - // Break the ops list into groups based on OpKind. - const groups = Array.from(ORDERING, () => new Array()); - for (const op of ops) { - const groupIndex = ORDERING.findIndex(o => o.test(op)); - groups[groupIndex].push(op); - } - // Reassemble the groups into a single list, in the correct order. - return groups.flatMap((group, i) => { - const transform = ORDERING[i].transform; - return transform ? transform(group) : group; - }); -} -/** - * Keeps only the last op in a list of ops. - */ -function keepLast(ops) { - return ops.slice(ops.length - 1); -} -function phasePureFunctionExtraction(job) { - for (const view of job.units) { - for (const op of view.ops()) { - visitExpressionsInOp(op, expr => { - if (!(expr instanceof PureFunctionExpr) || expr.body === null) { - return; - } - const constantDef = new PureFunctionConstant(expr.args.length); - expr.fn = job.pool.getSharedConstant(constantDef, expr.body); - expr.body = null; - }); - } - } -} -class PureFunctionConstant extends GenericKeyFn { - constructor(numArgs) { - super(); - this.numArgs = numArgs; - } - keyOf(expr) { - if (expr instanceof PureFunctionParameterExpr) { - return `param(${expr.index})`; - } else { - return super.keyOf(expr); - } - } - toSharedConstantDeclaration(declName, keyExpr) { - const fnParams = []; - for (let idx = 0; idx < this.numArgs; idx++) { - fnParams.push(new FnParam('_p' + idx)); - } - // We will never visit `ir.PureFunctionParameterExpr`s that don't belong to us, because this - // transform runs inside another visitor which will visit nested pure functions before this one. - const returnExpr = transformExpressionsInExpression(keyExpr, expr => { - if (!(expr instanceof PureFunctionParameterExpr)) { - return expr; - } - return variable('_p' + expr.index); - }, VisitorContextFlag.None); - return new DeclareFunctionStmt(declName, fnParams, [new ReturnStatement(returnExpr)]); - } -} -function phasePureLiteralStructures(job) { - for (const view of job.units) { - for (const op of view.update) { - transformExpressionsInOp(op, (expr, flags) => { - if (flags & VisitorContextFlag.InChildOperation) { - return expr; - } - if (expr instanceof LiteralArrayExpr) { - return transformLiteralArray(expr); - } else if (expr instanceof LiteralMapExpr) { - return transformLiteralMap(expr); - } - return expr; - }, VisitorContextFlag.None); - } - } -} -function transformLiteralArray(expr) { - const derivedEntries = []; - const nonConstantArgs = []; - for (const entry of expr.entries) { - if (entry.isConstant()) { - derivedEntries.push(entry); - } else { - const idx = nonConstantArgs.length; - nonConstantArgs.push(entry); - derivedEntries.push(new PureFunctionParameterExpr(idx)); - } - } - return new PureFunctionExpr(literalArr(derivedEntries), nonConstantArgs); -} -function transformLiteralMap(expr) { - let derivedEntries = []; - const nonConstantArgs = []; - for (const entry of expr.entries) { - if (entry.value.isConstant()) { - derivedEntries.push(entry); - } else { - const idx = nonConstantArgs.length; - nonConstantArgs.push(entry.value); - derivedEntries.push(new LiteralMapEntry(entry.key, new PureFunctionParameterExpr(idx), entry.quoted)); - } - } - return new PureFunctionExpr(literalMap(derivedEntries), nonConstantArgs); -} - -// This file contains helpers for generating calls to Ivy instructions. In particular, each -// instruction type is represented as a function, which may select a specific instruction variant -// depending on the exact arguments. -function element(slot, tag, constIndex, localRefIndex, sourceSpan) { - return elementOrContainerBase(Identifiers.element, slot, tag, constIndex, localRefIndex, sourceSpan); -} -function elementStart(slot, tag, constIndex, localRefIndex, sourceSpan) { - return elementOrContainerBase(Identifiers.elementStart, slot, tag, constIndex, localRefIndex, sourceSpan); -} -function elementOrContainerBase(instruction, slot, tag, constIndex, localRefIndex, sourceSpan) { - const args = [literal(slot)]; - if (tag !== null) { - args.push(literal(tag)); - } - if (localRefIndex !== null) { - args.push(literal(constIndex), - // might be null, but that's okay. - literal(localRefIndex)); - } else if (constIndex !== null) { - args.push(literal(constIndex)); - } - return call(instruction, args, sourceSpan); -} -function elementEnd(sourceSpan) { - return call(Identifiers.elementEnd, [], sourceSpan); -} -function elementContainerStart(slot, constIndex, localRefIndex, sourceSpan) { - return elementOrContainerBase(Identifiers.elementContainerStart, slot, /* tag */null, constIndex, localRefIndex, sourceSpan); -} -function elementContainer(slot, constIndex, localRefIndex, sourceSpan) { - return elementOrContainerBase(Identifiers.elementContainer, slot, /* tag */null, constIndex, localRefIndex, sourceSpan); -} -function elementContainerEnd() { - return call(Identifiers.elementContainerEnd, [], null); -} -function template(slot, templateFnRef, decls, vars, tag, constIndex, sourceSpan) { - return call(Identifiers.templateCreate, [literal(slot), templateFnRef, literal(decls), literal(vars), literal(tag), literal(constIndex)], sourceSpan); -} -function disableBindings() { - return call(Identifiers.disableBindings, [], null); -} -function enableBindings() { - return call(Identifiers.enableBindings, [], null); -} -function listener(name, handlerFn) { - return call(Identifiers.listener, [literal(name), handlerFn], null); -} -function pipe(slot, name) { - return call(Identifiers.pipe, [literal(slot), literal(name)], null); -} -function namespaceHTML() { - return call(Identifiers.namespaceHTML, [], null); -} -function namespaceSVG() { - return call(Identifiers.namespaceSVG, [], null); -} -function namespaceMath() { - return call(Identifiers.namespaceMathML, [], null); -} -function advance(delta, sourceSpan) { - return call(Identifiers.advance, [literal(delta)], sourceSpan); -} -function reference(slot) { - return importExpr(Identifiers.reference).callFn([literal(slot)]); -} -function nextContext(steps) { - return importExpr(Identifiers.nextContext).callFn(steps === 1 ? [] : [literal(steps)]); -} -function getCurrentView() { - return importExpr(Identifiers.getCurrentView).callFn([]); -} -function restoreView(savedView) { - return importExpr(Identifiers.restoreView).callFn([savedView]); -} -function resetView(returnValue) { - return importExpr(Identifiers.resetView).callFn([returnValue]); -} -function text(slot, initialValue, sourceSpan) { - const args = [literal(slot, null)]; - if (initialValue !== '') { - args.push(literal(initialValue)); - } - return call(Identifiers.text, args, sourceSpan); -} -function property(name, expression, sanitizer, sourceSpan) { - const args = [literal(name), expression]; - if (sanitizer !== null) { - args.push(sanitizer); - } - return call(Identifiers.property, args, sourceSpan); -} -function attribute(name, expression, sanitizer) { - const args = [literal(name), expression]; - if (sanitizer !== null) { - args.push(sanitizer); - } - return call(Identifiers.attribute, args, null); -} -function styleProp(name, expression, unit) { - const args = [literal(name), expression]; - if (unit !== null) { - args.push(literal(unit)); - } - return call(Identifiers.styleProp, args, null); -} -function classProp(name, expression) { - return call(Identifiers.classProp, [literal(name), expression], null); -} -function styleMap(expression) { - return call(Identifiers.styleMap, [expression], null); -} -function classMap(expression) { - return call(Identifiers.classMap, [expression], null); -} -const PIPE_BINDINGS = [Identifiers.pipeBind1, Identifiers.pipeBind2, Identifiers.pipeBind3, Identifiers.pipeBind4]; -function pipeBind(slot, varOffset, args) { - if (args.length < 1 || args.length > PIPE_BINDINGS.length) { - throw new Error(`pipeBind() argument count out of bounds`); - } - const instruction = PIPE_BINDINGS[args.length - 1]; - return importExpr(instruction).callFn([literal(slot), literal(varOffset), ...args]); -} -function pipeBindV(slot, varOffset, args) { - return importExpr(Identifiers.pipeBindV).callFn([literal(slot), literal(varOffset), args]); -} -function textInterpolate(strings, expressions, sourceSpan) { - if (strings.length < 1 || expressions.length !== strings.length - 1) { - throw new Error(`AssertionError: expected specific shape of args for strings/expressions in interpolation`); - } - const interpolationArgs = []; - if (expressions.length === 1 && strings[0] === '' && strings[1] === '') { - interpolationArgs.push(expressions[0]); - } else { - let idx; - for (idx = 0; idx < expressions.length; idx++) { - interpolationArgs.push(literal(strings[idx]), expressions[idx]); - } - // idx points at the last string. - interpolationArgs.push(literal(strings[idx])); - } - return callVariadicInstruction(TEXT_INTERPOLATE_CONFIG, [], interpolationArgs, [], sourceSpan); -} -function propertyInterpolate(name, strings, expressions, sanitizer, sourceSpan) { - const interpolationArgs = collateInterpolationArgs(strings, expressions); - const extraArgs = []; - if (sanitizer !== null) { - extraArgs.push(sanitizer); - } - return callVariadicInstruction(PROPERTY_INTERPOLATE_CONFIG, [literal(name)], interpolationArgs, extraArgs, sourceSpan); -} -function attributeInterpolate(name, strings, expressions, sanitizer) { - const interpolationArgs = collateInterpolationArgs(strings, expressions); - const extraArgs = []; - if (sanitizer !== null) { - extraArgs.push(sanitizer); - } - return callVariadicInstruction(ATTRIBUTE_INTERPOLATE_CONFIG, [literal(name)], interpolationArgs, extraArgs, null); -} -function stylePropInterpolate(name, strings, expressions, unit) { - const interpolationArgs = collateInterpolationArgs(strings, expressions); - const extraArgs = []; - if (unit !== null) { - extraArgs.push(literal(unit)); - } - return callVariadicInstruction(STYLE_PROP_INTERPOLATE_CONFIG, [literal(name)], interpolationArgs, extraArgs, null); -} -function styleMapInterpolate(strings, expressions) { - const interpolationArgs = collateInterpolationArgs(strings, expressions); - return callVariadicInstruction(STYLE_MAP_INTERPOLATE_CONFIG, [], interpolationArgs, [], null); -} -function classMapInterpolate(strings, expressions) { - const interpolationArgs = collateInterpolationArgs(strings, expressions); - return callVariadicInstruction(CLASS_MAP_INTERPOLATE_CONFIG, [], interpolationArgs, [], null); -} -function hostProperty(name, expression) { - return call(Identifiers.hostProperty, [literal(name), expression], null); -} -function pureFunction(varOffset, fn, args) { - return callVariadicInstructionExpr(PURE_FUNCTION_CONFIG, [literal(varOffset), fn], args, [], null); -} -/** - * Collates the string an expression arguments for an interpolation instruction. - */ -function collateInterpolationArgs(strings, expressions) { - if (strings.length < 1 || expressions.length !== strings.length - 1) { - throw new Error(`AssertionError: expected specific shape of args for strings/expressions in interpolation`); - } - const interpolationArgs = []; - if (expressions.length === 1 && strings[0] === '' && strings[1] === '') { - interpolationArgs.push(expressions[0]); - } else { - let idx; - for (idx = 0; idx < expressions.length; idx++) { - interpolationArgs.push(literal(strings[idx]), expressions[idx]); - } - // idx points at the last string. - interpolationArgs.push(literal(strings[idx])); - } - return interpolationArgs; -} -function call(instruction, args, sourceSpan) { - const expr = importExpr(instruction).callFn(args, sourceSpan); - return createStatementOp(new ExpressionStatement(expr, sourceSpan)); -} -/** - * `InterpolationConfig` for the `textInterpolate` instruction. - */ -const TEXT_INTERPOLATE_CONFIG = { - constant: [Identifiers.textInterpolate, Identifiers.textInterpolate1, Identifiers.textInterpolate2, Identifiers.textInterpolate3, Identifiers.textInterpolate4, Identifiers.textInterpolate5, Identifiers.textInterpolate6, Identifiers.textInterpolate7, Identifiers.textInterpolate8], - variable: Identifiers.textInterpolateV, - mapping: n => { - if (n % 2 === 0) { - throw new Error(`Expected odd number of arguments`); - } - return (n - 1) / 2; - } -}; -/** - * `InterpolationConfig` for the `propertyInterpolate` instruction. - */ -const PROPERTY_INTERPOLATE_CONFIG = { - constant: [Identifiers.propertyInterpolate, Identifiers.propertyInterpolate1, Identifiers.propertyInterpolate2, Identifiers.propertyInterpolate3, Identifiers.propertyInterpolate4, Identifiers.propertyInterpolate5, Identifiers.propertyInterpolate6, Identifiers.propertyInterpolate7, Identifiers.propertyInterpolate8], - variable: Identifiers.propertyInterpolateV, - mapping: n => { - if (n % 2 === 0) { - throw new Error(`Expected odd number of arguments`); - } - return (n - 1) / 2; - } -}; -/** - * `InterpolationConfig` for the `stylePropInterpolate` instruction. - */ -const STYLE_PROP_INTERPOLATE_CONFIG = { - constant: [Identifiers.styleProp, Identifiers.stylePropInterpolate1, Identifiers.stylePropInterpolate2, Identifiers.stylePropInterpolate3, Identifiers.stylePropInterpolate4, Identifiers.stylePropInterpolate5, Identifiers.stylePropInterpolate6, Identifiers.stylePropInterpolate7, Identifiers.stylePropInterpolate8], - variable: Identifiers.stylePropInterpolateV, - mapping: n => { - if (n % 2 === 0) { - throw new Error(`Expected odd number of arguments`); - } - return (n - 1) / 2; - } -}; -/** - * `InterpolationConfig` for the `attributeInterpolate` instruction. - */ -const ATTRIBUTE_INTERPOLATE_CONFIG = { - constant: [Identifiers.attribute, Identifiers.attributeInterpolate1, Identifiers.attributeInterpolate2, Identifiers.attributeInterpolate3, Identifiers.attributeInterpolate4, Identifiers.attributeInterpolate5, Identifiers.attributeInterpolate6, Identifiers.attributeInterpolate7, Identifiers.attributeInterpolate8], - variable: Identifiers.attributeInterpolateV, - mapping: n => { - if (n % 2 === 0) { - throw new Error(`Expected odd number of arguments`); - } - return (n - 1) / 2; - } -}; -/** - * `InterpolationConfig` for the `styleMapInterpolate` instruction. - */ -const STYLE_MAP_INTERPOLATE_CONFIG = { - constant: [Identifiers.styleMap, Identifiers.styleMapInterpolate1, Identifiers.styleMapInterpolate2, Identifiers.styleMapInterpolate3, Identifiers.styleMapInterpolate4, Identifiers.styleMapInterpolate5, Identifiers.styleMapInterpolate6, Identifiers.styleMapInterpolate7, Identifiers.styleMapInterpolate8], - variable: Identifiers.styleMapInterpolateV, - mapping: n => { - if (n % 2 === 0) { - throw new Error(`Expected odd number of arguments`); - } - return (n - 1) / 2; - } -}; -/** - * `InterpolationConfig` for the `classMapInterpolate` instruction. - */ -const CLASS_MAP_INTERPOLATE_CONFIG = { - constant: [Identifiers.classMap, Identifiers.classMapInterpolate1, Identifiers.classMapInterpolate2, Identifiers.classMapInterpolate3, Identifiers.classMapInterpolate4, Identifiers.classMapInterpolate5, Identifiers.classMapInterpolate6, Identifiers.classMapInterpolate7, Identifiers.classMapInterpolate8], - variable: Identifiers.classMapInterpolateV, - mapping: n => { - if (n % 2 === 0) { - throw new Error(`Expected odd number of arguments`); - } - return (n - 1) / 2; - } -}; -const PURE_FUNCTION_CONFIG = { - constant: [Identifiers.pureFunction0, Identifiers.pureFunction1, Identifiers.pureFunction2, Identifiers.pureFunction3, Identifiers.pureFunction4, Identifiers.pureFunction5, Identifiers.pureFunction6, Identifiers.pureFunction7, Identifiers.pureFunction8], - variable: Identifiers.pureFunctionV, - mapping: n => n -}; -function callVariadicInstructionExpr(config, baseArgs, interpolationArgs, extraArgs, sourceSpan) { - const n = config.mapping(interpolationArgs.length); - if (n < config.constant.length) { - // Constant calling pattern. - return importExpr(config.constant[n]).callFn([...baseArgs, ...interpolationArgs, ...extraArgs], sourceSpan); - } else if (config.variable !== null) { - // Variable calling pattern. - return importExpr(config.variable).callFn([...baseArgs, literalArr(interpolationArgs), ...extraArgs], sourceSpan); - } else { - throw new Error(`AssertionError: unable to call variadic function`); - } -} -function callVariadicInstruction(config, baseArgs, interpolationArgs, extraArgs, sourceSpan) { - return createStatementOp(callVariadicInstructionExpr(config, baseArgs, interpolationArgs, extraArgs, sourceSpan).toStmt()); -} - -/** - * Map of sanitizers to their identifier. - */ -const sanitizerIdentifierMap = new Map([[SanitizerFn.Html, Identifiers.sanitizeHtml], [SanitizerFn.IframeAttribute, Identifiers.validateIframeAttribute], [SanitizerFn.ResourceUrl, Identifiers.sanitizeResourceUrl], [SanitizerFn.Script, Identifiers.sanitizeScript], [SanitizerFn.Style, Identifiers.sanitizeStyle], [SanitizerFn.Url, Identifiers.sanitizeUrl]]); -/** - * Compiles semantic operations across all views and generates output `o.Statement`s with actual - * runtime calls in their place. - * - * Reification replaces semantic operations with selected Ivy instructions and other generated code - * structures. After reification, the create/update operation lists of all views should only contain - * `ir.StatementOp`s (which wrap generated `o.Statement`s). - */ -function phaseReify(cpl) { - for (const unit of cpl.units) { - reifyCreateOperations(unit, unit.create); - reifyUpdateOperations(unit, unit.update); - } -} -function reifyCreateOperations(unit, ops) { - for (const op of ops) { - transformExpressionsInOp(op, reifyIrExpression, VisitorContextFlag.None); - switch (op.kind) { - case OpKind.Text: - OpList.replace(op, text(op.slot, op.initialValue, op.sourceSpan)); - break; - case OpKind.ElementStart: - OpList.replace(op, elementStart(op.slot, op.tag, op.attributes, op.localRefs, op.sourceSpan)); - break; - case OpKind.Element: - OpList.replace(op, element(op.slot, op.tag, op.attributes, op.localRefs, op.sourceSpan)); - break; - case OpKind.ElementEnd: - OpList.replace(op, elementEnd(op.sourceSpan)); - break; - case OpKind.ContainerStart: - OpList.replace(op, elementContainerStart(op.slot, op.attributes, op.localRefs, op.sourceSpan)); - break; - case OpKind.Container: - OpList.replace(op, elementContainer(op.slot, op.attributes, op.localRefs, op.sourceSpan)); - break; - case OpKind.ContainerEnd: - OpList.replace(op, elementContainerEnd()); - break; - case OpKind.Template: - if (!(unit instanceof ViewCompilationUnit)) { - throw new Error(`AssertionError: must be compiling a component`); - } - const childView = unit.job.views.get(op.xref); - OpList.replace(op, template(op.slot, variable(childView.fnName), childView.decls, childView.vars, op.tag, op.attributes, op.sourceSpan)); - break; - case OpKind.DisableBindings: - OpList.replace(op, disableBindings()); - break; - case OpKind.EnableBindings: - OpList.replace(op, enableBindings()); - break; - case OpKind.Pipe: - OpList.replace(op, pipe(op.slot, op.name)); - break; - case OpKind.Listener: - const listenerFn = reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, op.consumesDollarEvent); - OpList.replace(op, listener(op.name, listenerFn)); - break; - case OpKind.Variable: - if (op.variable.name === null) { - throw new Error(`AssertionError: unnamed variable ${op.xref}`); - } - OpList.replace(op, createStatementOp(new DeclareVarStmt(op.variable.name, op.initializer, undefined, StmtModifier.Final))); - break; - case OpKind.Namespace: - switch (op.active) { - case Namespace.HTML: - OpList.replace(op, namespaceHTML()); - break; - case Namespace.SVG: - OpList.replace(op, namespaceSVG()); - break; - case Namespace.Math: - OpList.replace(op, namespaceMath()); - break; - } - break; - case OpKind.Statement: - // Pass statement operations directly through. - break; - default: - throw new Error(`AssertionError: Unsupported reification of create op ${OpKind[op.kind]}`); - } - } -} -function reifyUpdateOperations(_unit, ops) { - for (const op of ops) { - transformExpressionsInOp(op, reifyIrExpression, VisitorContextFlag.None); - switch (op.kind) { - case OpKind.Advance: - OpList.replace(op, advance(op.delta, op.sourceSpan)); - break; - case OpKind.Property: - if (op.expression instanceof Interpolation) { - OpList.replace(op, propertyInterpolate(op.name, op.expression.strings, op.expression.expressions, op.sanitizer, op.sourceSpan)); - } else { - OpList.replace(op, property(op.name, op.expression, op.sanitizer, op.sourceSpan)); - } - break; - case OpKind.StyleProp: - if (op.expression instanceof Interpolation) { - OpList.replace(op, stylePropInterpolate(op.name, op.expression.strings, op.expression.expressions, op.unit)); - } else { - OpList.replace(op, styleProp(op.name, op.expression, op.unit)); - } - break; - case OpKind.ClassProp: - OpList.replace(op, classProp(op.name, op.expression)); - break; - case OpKind.StyleMap: - if (op.expression instanceof Interpolation) { - OpList.replace(op, styleMapInterpolate(op.expression.strings, op.expression.expressions)); - } else { - OpList.replace(op, styleMap(op.expression)); - } - break; - case OpKind.ClassMap: - if (op.expression instanceof Interpolation) { - OpList.replace(op, classMapInterpolate(op.expression.strings, op.expression.expressions)); - } else { - OpList.replace(op, classMap(op.expression)); - } - break; - case OpKind.InterpolateText: - OpList.replace(op, textInterpolate(op.interpolation.strings, op.interpolation.expressions, op.sourceSpan)); - break; - case OpKind.Attribute: - if (op.expression instanceof Interpolation) { - OpList.replace(op, attributeInterpolate(op.name, op.expression.strings, op.expression.expressions, op.sanitizer)); - } else { - OpList.replace(op, attribute(op.name, op.expression, op.sanitizer)); - } - break; - case OpKind.HostProperty: - if (op.expression instanceof Interpolation) { - throw new Error('not yet handled'); - } else { - OpList.replace(op, hostProperty(op.name, op.expression)); - } - break; - case OpKind.Variable: - if (op.variable.name === null) { - throw new Error(`AssertionError: unnamed variable ${op.xref}`); - } - OpList.replace(op, createStatementOp(new DeclareVarStmt(op.variable.name, op.initializer, undefined, StmtModifier.Final))); - break; - case OpKind.Statement: - // Pass statement operations directly through. - break; - default: - throw new Error(`AssertionError: Unsupported reification of update op ${OpKind[op.kind]}`); - } - } -} -function reifyIrExpression(expr) { - if (!isIrExpression(expr)) { - return expr; - } - switch (expr.kind) { - case ExpressionKind.NextContext: - return nextContext(expr.steps); - case ExpressionKind.Reference: - return reference(expr.slot + 1 + expr.offset); - case ExpressionKind.LexicalRead: - throw new Error(`AssertionError: unresolved LexicalRead of ${expr.name}`); - case ExpressionKind.RestoreView: - if (typeof expr.view === 'number') { - throw new Error(`AssertionError: unresolved RestoreView`); - } - return restoreView(expr.view); - case ExpressionKind.ResetView: - return resetView(expr.expr); - case ExpressionKind.GetCurrentView: - return getCurrentView(); - case ExpressionKind.ReadVariable: - if (expr.name === null) { - throw new Error(`Read of unnamed variable ${expr.xref}`); - } - return variable(expr.name); - case ExpressionKind.ReadTemporaryExpr: - if (expr.name === null) { - throw new Error(`Read of unnamed temporary ${expr.xref}`); - } - return variable(expr.name); - case ExpressionKind.AssignTemporaryExpr: - if (expr.name === null) { - throw new Error(`Assign of unnamed temporary ${expr.xref}`); - } - return variable(expr.name).set(expr.expr); - case ExpressionKind.PureFunctionExpr: - if (expr.fn === null) { - throw new Error(`AssertionError: expected PureFunctions to have been extracted`); - } - return pureFunction(expr.varOffset, expr.fn, expr.args); - case ExpressionKind.PureFunctionParameterExpr: - throw new Error(`AssertionError: expected PureFunctionParameterExpr to have been extracted`); - case ExpressionKind.PipeBinding: - return pipeBind(expr.slot, expr.varOffset, expr.args); - case ExpressionKind.PipeBindingVariadic: - return pipeBindV(expr.slot, expr.varOffset, expr.args); - case ExpressionKind.SanitizerExpr: - return importExpr(sanitizerIdentifierMap.get(expr.fn)); - default: - throw new Error(`AssertionError: Unsupported reification of ir.Expression kind: ${ExpressionKind[expr.kind]}`); - } -} -/** - * Listeners get turned into a function expression, which may or may not have the `$event` - * parameter defined. - */ -function reifyListenerHandler(unit, name, handlerOps, consumesDollarEvent) { - // First, reify all instruction calls within `handlerOps`. - reifyUpdateOperations(unit, handlerOps); - // Next, extract all the `o.Statement`s from the reified operations. We can expect that at this - // point, all operations have been converted to statements. - const handlerStmts = []; - for (const op of handlerOps) { - if (op.kind !== OpKind.Statement) { - throw new Error(`AssertionError: expected reified statements, but found op ${OpKind[op.kind]}`); - } - handlerStmts.push(op.statement); - } - // If `$event` is referenced, we need to generate it as a parameter. - const params = []; - if (consumesDollarEvent) { - // We need the `$event` parameter. - params.push(new FnParam('$event')); - } - return fn(params, handlerStmts, undefined, undefined, name); -} -function phaseRemoveEmptyBindings(job) { - for (const unit of job.units) { - for (const op of unit.update) { - switch (op.kind) { - case OpKind.Attribute: - case OpKind.Binding: - case OpKind.ClassProp: - case OpKind.ClassMap: - case OpKind.Property: - case OpKind.StyleProp: - case OpKind.StyleMap: - if (op.expression instanceof EmptyExpr) { - OpList.remove(op); - } - break; - } - } - } -} - -/** - * Resolves `ir.ContextExpr` expressions (which represent embedded view or component contexts) to - * either the `ctx` parameter to component functions (for the current view context) or to variables - * that store those contexts (for contexts accessed via the `nextContext()` instruction). - */ -function phaseResolveContexts(cpl) { - for (const unit of cpl.units) { - processLexicalScope$1(unit, unit.create); - processLexicalScope$1(unit, unit.update); - } -} -function processLexicalScope$1(view, ops) { - // Track the expressions used to access all available contexts within the current view, by the - // view `ir.XrefId`. - const scope = new Map(); - // The current view's context is accessible via the `ctx` parameter. - scope.set(view.xref, variable('ctx')); - for (const op of ops) { - switch (op.kind) { - case OpKind.Variable: - switch (op.variable.kind) { - case SemanticVariableKind.Context: - scope.set(op.variable.view, new ReadVariableExpr(op.xref)); - break; - } - break; - case OpKind.Listener: - processLexicalScope$1(view, op.handlerOps); - break; - } - } - for (const op of ops) { - transformExpressionsInOp(op, expr => { - if (expr instanceof ContextExpr) { - if (!scope.has(expr.view)) { - throw new Error(`No context found for reference to view ${expr.view} from view ${view.xref}`); - } - return scope.get(expr.view); - } else { - return expr; - } - }, VisitorContextFlag.None); - } -} - -/** - * Any variable inside a listener with the name `$event` will be transformed into a output lexical - * read immediately, and does not participate in any of the normal logic for handling variables. - */ -function phaseResolveDollarEvent(cpl) { - for (const [_, view] of cpl.views) { - resolveDollarEvent(view, view.create); - resolveDollarEvent(view, view.update); - } -} -function resolveDollarEvent(view, ops) { - for (const op of ops) { - if (op.kind === OpKind.Listener) { - transformExpressionsInOp(op, expr => { - if (expr instanceof LexicalReadExpr && expr.name === '$event') { - op.consumesDollarEvent = true; - return new ReadVarExpr(expr.name); - } - return expr; - }, VisitorContextFlag.InChildOperation); - } - } -} - -/** - * Resolves lexical references in views (`ir.LexicalReadExpr`) to either a target variable or to - * property reads on the top-level component context. - * - * Also matches `ir.RestoreViewExpr` expressions with the variables of their corresponding saved - * views. - */ -function phaseResolveNames(cpl) { - for (const unit of cpl.units) { - processLexicalScope(unit, unit.create, null); - processLexicalScope(unit, unit.update, null); - } -} -function processLexicalScope(unit, ops, savedView) { - // Maps names defined in the lexical scope of this template to the `ir.XrefId`s of the variable - // declarations which represent those values. - // - // Since variables are generated in each view for the entire lexical scope (including any - // identifiers from parent templates) only local variables need be considered here. - const scope = new Map(); - // First, step through the operations list and: - // 1) build up the `scope` mapping - // 2) recurse into any listener functions - for (const op of ops) { - switch (op.kind) { - case OpKind.Variable: - switch (op.variable.kind) { - case SemanticVariableKind.Identifier: - // This variable represents some kind of identifier which can be used in the template. - if (scope.has(op.variable.identifier)) { - continue; - } - scope.set(op.variable.identifier, op.xref); - break; - case SemanticVariableKind.SavedView: - // This variable represents a snapshot of the current view context, and can be used to - // restore that context within listener functions. - savedView = { - view: op.variable.view, - variable: op.xref - }; - break; - } - break; - case OpKind.Listener: - // Listener functions have separate variable declarations, so process them as a separate - // lexical scope. - processLexicalScope(unit, op.handlerOps, savedView); - break; - } - } - // Next, use the `scope` mapping to match `ir.LexicalReadExpr` with defined names in the lexical - // scope. Also, look for `ir.RestoreViewExpr`s and match them with the snapshotted view context - // variable. - for (const op of ops) { - if (op.kind == OpKind.Listener) { - // Listeners were already processed above with their own scopes. - continue; - } - transformExpressionsInOp(op, (expr, flags) => { - if (expr instanceof LexicalReadExpr) { - // `expr` is a read of a name within the lexical scope of this view. - // Either that name is defined within the current view, or it represents a property from the - // main component context. - if (scope.has(expr.name)) { - // This was a defined variable in the current scope. - return new ReadVariableExpr(scope.get(expr.name)); - } else { - // Reading from the component context. - return new ReadPropExpr(new ContextExpr(unit.job.root.xref), expr.name); - } - } else if (expr instanceof RestoreViewExpr && typeof expr.view === 'number') { - // `ir.RestoreViewExpr` happens in listener functions and restores a saved view from the - // parent creation list. We expect to find that we captured the `savedView` previously, and - // that it matches the expected view to be restored. - if (savedView === null || savedView.view !== expr.view) { - throw new Error(`AssertionError: no saved view ${expr.view} from view ${unit.xref}`); - } - expr.view = new ReadVariableExpr(savedView.variable); - return expr; - } else { - return expr; - } - }, VisitorContextFlag.None); - } - for (const op of ops) { - visitExpressionsInOp(op, expr => { - if (expr instanceof LexicalReadExpr) { - throw new Error(`AssertionError: no lexical reads should remain, but found read of ${expr.name}`); - } - }); - } -} - -/** - * Mapping of security contexts to sanitizer function for that context. - */ -const sanitizers = new Map([[SecurityContext.HTML, SanitizerFn.Html], [SecurityContext.SCRIPT, SanitizerFn.Script], [SecurityContext.STYLE, SanitizerFn.Style], [SecurityContext.URL, SanitizerFn.Url], [SecurityContext.RESOURCE_URL, SanitizerFn.ResourceUrl]]); -/** - * Resolves sanitization functions for ops that need them. - */ -function phaseResolveSanitizers(cpl) { - for (const [_, view] of cpl.views) { - const elements = getElementsByXrefId(view); - let sanitizerFn; - for (const op of view.update) { - switch (op.kind) { - case OpKind.Property: - case OpKind.Attribute: - sanitizerFn = sanitizers.get(op.securityContext) || null; - op.sanitizer = sanitizerFn ? new SanitizerExpr(sanitizerFn) : null; - // If there was no sanitization function found based on the security context of an - // attribute/property, check whether this attribute/property is one of the - // security-sensitive