Spaces:
Running
Running
/* | |
* ATTENTION: An "eval-source-map" devtool has been used. | |
* This devtool is neither made for production nor for readable output files. | |
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. | |
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) | |
* or disable the default devtool with "devtool: false". | |
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). | |
*/ | |
/******/ (() => { // webpackBootstrap | |
/******/ "use strict"; | |
/******/ var __webpack_modules__ = ({ | |
/***/ "./src/fragmentLoader.js": | |
/*!*******************************!*\ | |
!*** ./src/fragmentLoader.js ***! | |
\*******************************/ | |
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadFragments: () => (/* binding */ loadFragments)\n/* harmony export */ });\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction loadFragments() {\n return _loadFragments.apply(this, arguments);\n}\nfunction _loadFragments() {\n _loadFragments = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n var fragmentElements, FetchQueue, fetchQueue, currentIndex, elements;\n return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n // Find all elements with ids starting with 'fragment-'\n fragmentElements = Array.from(document.querySelectorAll('[id^=\"fragment-\"]'));\n FetchQueue = /*#__PURE__*/function () {\n function FetchQueue() {\n var maxConcurrent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n _classCallCheck(this, FetchQueue);\n this.queue = [];\n this.maxConcurrent = maxConcurrent;\n this.activeFetches = 0;\n this.maxRetries = 3; // Maximum number of retry attempts\n this.baseDelay = 1000; // Base delay in milliseconds (1 second)\n }\n return _createClass(FetchQueue, [{\n key: \"sleep\",\n value: function () {\n var _sleep = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(ms) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", new Promise(function (resolve) {\n return setTimeout(resolve, ms);\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function sleep(_x) {\n return _sleep.apply(this, arguments);\n }\n return sleep;\n }()\n }, {\n key: \"fetchWithRetry\",\n value: function () {\n var _fetchWithRetry = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(fragmentPath) {\n var retryCount,\n response,\n delay,\n _args2 = arguments;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n retryCount = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 0;\n _context2.prev = 1;\n _context2.next = 4;\n return fetch(fragmentPath);\n case 4:\n response = _context2.sent;\n if (response.ok) {\n _context2.next = 7;\n break;\n }\n throw new Error(\"HTTP error! status: \".concat(response.status));\n case 7:\n _context2.next = 9;\n return response.text();\n case 9:\n return _context2.abrupt(\"return\", _context2.sent);\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2[\"catch\"](1);\n if (!(retryCount < this.maxRetries)) {\n _context2.next = 20;\n break;\n }\n // Exponential backoff: 1s, 2s, 4s\n delay = this.baseDelay * Math.pow(2, retryCount);\n console.warn(\"Retry \".concat(retryCount + 1, \"/\").concat(this.maxRetries, \" for \").concat(fragmentPath, \" after \").concat(delay, \"ms\"));\n _context2.next = 19;\n return this.sleep(delay);\n case 19:\n return _context2.abrupt(\"return\", this.fetchWithRetry(fragmentPath, retryCount + 1));\n case 20:\n throw _context2.t0;\n case 21:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this, [[1, 12]]);\n }));\n function fetchWithRetry(_x2) {\n return _fetchWithRetry.apply(this, arguments);\n }\n return fetchWithRetry;\n }()\n }, {\n key: \"addFetch\",\n value: function () {\n var _addFetch = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(element) {\n var _this = this;\n var fragmentName, fragmentPath;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n fragmentName = element.id.replace('fragment-', '');\n fragmentPath = \"fragments/\".concat(fragmentName, \".html\");\n return _context5.abrupt(\"return\", new Promise(/*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(resolve, reject) {\n var fetchPromise;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n try {\n fetchPromise = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n var html, temp, scripts;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return _this.fetchWithRetry(fragmentPath);\n case 3:\n html = _context3.sent;\n // Process the fragment\n temp = document.createElement('div');\n temp.innerHTML = html;\n element.innerHTML = temp.innerHTML;\n\n // Handle scripts\n scripts = temp.getElementsByTagName('script');\n Array.from(scripts).forEach(function (oldScript) {\n var newScript = document.createElement('script');\n Array.from(oldScript.attributes).forEach(function (attr) {\n newScript.setAttribute(attr.name, attr.value);\n });\n newScript.textContent = oldScript.textContent;\n oldScript.parentNode.removeChild(oldScript);\n document.body.appendChild(newScript);\n });\n _this.activeFetches--;\n resolve();\n _context3.next = 18;\n break;\n case 13:\n _context3.prev = 13;\n _context3.t0 = _context3[\"catch\"](0);\n console.error(\"Failed to load fragment \".concat(fragmentPath, \" after \").concat(_this.maxRetries, \" retries:\"), _context3.t0);\n _this.activeFetches--;\n reject(_context3.t0);\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[0, 13]]);\n }))();\n _this.queue.push(fetchPromise);\n _this.activeFetches++;\n } catch (error) {\n reject(error);\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function (_x4, _x5) {\n return _ref.apply(this, arguments);\n };\n }()));\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n function addFetch(_x3) {\n return _addFetch.apply(this, arguments);\n }\n return addFetch;\n }()\n }, {\n key: \"processNext\",\n value: function () {\n var _processNext = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(element) {\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (!(this.activeFetches < this.maxConcurrent && element)) {\n _context6.next = 3;\n break;\n }\n _context6.next = 3;\n return this.addFetch(element);\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n function processNext(_x6) {\n return _processNext.apply(this, arguments);\n }\n return processNext;\n }()\n }]);\n }(); // Initialize queue\n fetchQueue = new FetchQueue(3);\n currentIndex = 0;\n elements = fragmentElements; // Assuming this is defined elsewhere\n // Initial loading of first 3 elements\n case 5:\n if (!(currentIndex < elements.length && currentIndex < 3)) {\n _context7.next = 11;\n break;\n }\n _context7.next = 8;\n return fetchQueue.processNext(elements[currentIndex]);\n case 8:\n currentIndex++;\n _context7.next = 5;\n break;\n case 11:\n if (!(currentIndex < elements.length)) {\n _context7.next = 20;\n break;\n }\n _context7.next = 14;\n return Promise.race(fetchQueue.queue);\n case 14:\n // Remove completed fetch from queue\n fetchQueue.queue = fetchQueue.queue.filter(function (p) {\n return p.status === 'pending';\n });\n // Add next element to queue\n _context7.next = 17;\n return fetchQueue.processNext(elements[currentIndex]);\n case 17:\n currentIndex++;\n _context7.next = 11;\n break;\n case 20:\n _context7.next = 22;\n return Promise.all(fetchQueue.queue);\n case 22:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n return _loadFragments.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O1VBQ3ZFO1VBQUEvQixTQUFBLENBQUE3RCxJQUFBO1VBQUEsT0FDTXlELFVBQVUsQ0FBQ3VGLFdBQVcsQ0FBQ3JGLFFBQVEsQ0FBQ0QsWUFBWSxDQUFDLENBQUM7UUFBQTtVQUNwREEsWUFBWSxFQUFFO1VBQUNHLFNBQUEsQ0FBQTdELElBQUE7VUFBQTtRQUFBO1VBQUE2RCxTQUFBLENBQUE3RCxJQUFBO1VBQUEsT0FJYnVCLE9BQU8sQ0FBQzZILEdBQUcsQ0FBQzNGLFVBQVUsQ0FBQ1csS0FBSyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFQLFNBQUEsQ0FBQS9CLElBQUE7TUFBQTtJQUFBLEdBQUF3QixRQUFBO0VBQUEsQ0FDdEM7RUFBQSxPQUFBRCxjQUFBLENBQUFKLEtBQUEsT0FBQUQsU0FBQTtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvZ3Bvc3QvLi9zcmMvZnJhZ21lbnRMb2FkZXIuanM/YWMzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJhc3luYyBmdW5jdGlvbiBsb2FkRnJhZ21lbnRzKCkge1xyXG4gICAgLy8gRmluZCBhbGwgZWxlbWVudHMgd2l0aCBpZHMgc3RhcnRpbmcgd2l0aCAnZnJhZ21lbnQtJ1xyXG4gICAgY29uc3QgZnJhZ21lbnRFbGVtZW50cyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkXj1cImZyYWdtZW50LVwiXScpKTtcclxuICAgIFxyXG4gICAgY2xhc3MgRmV0Y2hRdWV1ZSB7XHJcbiAgICAgICAgY29uc3RydWN0b3IobWF4Q29uY3VycmVudCA9IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLm1heENvbmN1cnJlbnQgPSBtYXhDb25jdXJyZW50O1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLm1heFJldHJpZXMgPSAzOyAvLyBNYXhpbXVtIG51bWJlciBvZiByZXRyeSBhdHRlbXB0c1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VEZWxheSA9IDEwMDA7IC8vIEJhc2UgZGVsYXkgaW4gbWlsbGlzZWNvbmRzICgxIHNlY29uZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFzeW5jIHNsZWVwKG1zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFzeW5jIGZldGNoV2l0aFJldHJ5KGZyYWdtZW50UGF0aCwgcmV0cnlDb3VudCA9IDApIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goZnJhZ21lbnRQYXRoKTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldHJ5Q291bnQgPCB0aGlzLm1heFJldHJpZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmOiAxcywgMnMsIDRzXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsYXkgPSB0aGlzLmJhc2VEZWxheSAqIE1hdGgucG93KDIsIHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmV0cnkgJHtyZXRyeUNvdW50ICsgMX0vJHt0aGlzLm1heFJldHJpZXN9IGZvciAke2ZyYWdtZW50UGF0aH0gYWZ0ZXIgJHtkZWxheX1tc2ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2xlZXAoZGVsYXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoV2l0aFJldHJ5KGZyYWdtZW50UGF0aCwgcmV0cnlDb3VudCArIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFzeW5jIGFkZEZldGNoKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnROYW1lID0gZWxlbWVudC5pZC5yZXBsYWNlKCdmcmFnbWVudC0nLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50UGF0aCA9IGBmcmFnbWVudHMvJHtmcmFnbWVudE5hbWV9Lmh0bWxgO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hQcm9taXNlID0gKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0aGlzLmZldGNoV2l0aFJldHJ5KGZyYWdtZW50UGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIGZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHRlbXAuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgc2NyaXB0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0cyA9IHRlbXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShzY3JpcHRzKS5mb3JFYWNoKG9sZFNjcmlwdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShvbGRTY3JpcHQuYXR0cmlidXRlcykuZm9yRWFjaChhdHRyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2NyaXB0LnNldEF0dHJpYnV0ZShhdHRyLm5hbWUsIGF0dHIudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NjcmlwdC50ZXh0Q29udGVudCA9IG9sZFNjcmlwdC50ZXh0Q29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRTY3JpcHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3U2NyaXB0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGZyYWdtZW50ICR7ZnJhZ21lbnRQYXRofSBhZnRlciAke3RoaXMubWF4UmV0cmllc30gcmV0cmllczpgLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlLnB1c2goZmV0Y2hQcm9taXNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZldGNoZXMrKztcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhc3luYyBwcm9jZXNzTmV4dChlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUZldGNoZXMgPCB0aGlzLm1heENvbmN1cnJlbnQgJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGRGZXRjaChlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplIHF1ZXVlXHJcbiAgICBjb25zdCBmZXRjaFF1ZXVlID0gbmV3IEZldGNoUXVldWUoMyk7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZnJhZ21lbnRFbGVtZW50czsgLy8gQXNzdW1pbmcgdGhpcyBpcyBkZWZpbmVkIGVsc2V3aGVyZVxyXG5cclxuICAgIC8vIEluaXRpYWwgbG9hZGluZyBvZiBmaXJzdCAzIGVsZW1lbnRzXHJcbiAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgZWxlbWVudHMubGVuZ3RoICYmIGN1cnJlbnRJbmRleCA8IDMpIHtcclxuICAgICAgICBhd2FpdCBmZXRjaFF1ZXVlLnByb2Nlc3NOZXh0KGVsZW1lbnRzW2N1cnJlbnRJbmRleF0pO1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByb2Nlc3MgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGZldGNoZXMgY29tcGxldGVcclxuICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCBlbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAvLyBXYWl0IGZvciBhbnkgZmV0Y2ggdG8gY29tcGxldGVcclxuICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoZmV0Y2hRdWV1ZS5xdWV1ZSk7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGNvbXBsZXRlZCBmZXRjaCBmcm9tIHF1ZXVlXHJcbiAgICAgICAgZmV0Y2hRdWV1ZS5xdWV1ZSA9IGZldGNoUXVldWUucXVldWUuZmlsdGVyKHAgPT4gcC5zdGF0dXMgPT09ICdwZW5kaW5nJyk7XHJcbiAgICAgICAgLy8gQWRkIG5leHQgZWxlbWVudCB0byBxdWV1ZVxyXG4gICAgICAgIGF3YWl0IGZldGNoUXVldWUucHJvY2Vzc05leHQoZWxlbWVudHNbY3VycmVudEluZGV4XSk7XHJcbiAgICAgICAgY3VycmVudEluZGV4Kys7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2FpdCBmb3IgcmVtYWluaW5nIGZldGNoZXMgdG8gY29tcGxldGVcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKGZldGNoUXVldWUucXVldWUpO1xyXG59XHJcblxyXG5leHBvcnQgeyBsb2FkRnJhZ21lbnRzIH0iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsImxvYWRGcmFnbWVudHMiLCJfbG9hZEZyYWdtZW50cyIsIl9jYWxsZWU3IiwiZnJhZ21lbnRFbGVtZW50cyIsIkZldGNoUXVldWUiLCJmZXRjaFF1ZXVlIiwiY3VycmVudEluZGV4IiwiZWxlbWVudHMiLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJBcnJheSIsImZyb20iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJtYXhDb25jdXJyZW50IiwidW5kZWZpbmVkIiwicXVldWUiLCJhY3RpdmVGZXRjaGVzIiwibWF4UmV0cmllcyIsImJhc2VEZWxheSIsIl9zbGVlcCIsIl9jYWxsZWUiLCJtcyIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzZXRUaW1lb3V0Iiwic2xlZXAiLCJfeCIsIl9mZXRjaFdpdGhSZXRyeSIsIl9jYWxsZWUyIiwiZnJhZ21lbnRQYXRoIiwicmV0cnlDb3VudCIsInJlc3BvbnNlIiwiZGVsYXkiLCJfYXJnczIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJmZXRjaCIsIm9rIiwiY29uY2F0Iiwic3RhdHVzIiwidGV4dCIsInQwIiwiTWF0aCIsInBvdyIsImNvbnNvbGUiLCJ3YXJuIiwiZmV0Y2hXaXRoUmV0cnkiLCJfeDIiLCJfYWRkRmV0Y2giLCJfY2FsbGVlNSIsImVsZW1lbnQiLCJfdGhpcyIsImZyYWdtZW50TmFtZSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsImlkIiwicmVwbGFjZSIsIl9yZWYiLCJfY2FsbGVlNCIsInJlamVjdCIsImZldGNoUHJvbWlzZSIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsIl9jYWxsZWUzIiwiaHRtbCIsInRlbXAiLCJzY3JpcHRzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwib2xkU2NyaXB0IiwibmV3U2NyaXB0IiwiYXR0cmlidXRlcyIsImF0dHIiLCJzZXRBdHRyaWJ1dGUiLCJ0ZXh0Q29udGVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImVycm9yIiwiX3g0IiwiX3g1IiwiYWRkRmV0Y2giLCJfeDMiLCJfcHJvY2Vzc05leHQiLCJfY2FsbGVlNiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInByb2Nlc3NOZXh0IiwiX3g2IiwicmFjZSIsImZpbHRlciIsImFsbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/fragmentLoader.js\n"); | |
/***/ }), | |
/***/ "./src/index.js": | |
/*!**********************!*\ | |
!*** ./src/index.js ***! | |
\**********************/ | |
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _fragmentLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fragmentLoader */ \"./src/fragmentLoader.js\");\n/* harmony import */ var _syncHFSpacesURLHash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./syncHFSpacesURLHash */ \"./src/syncHFSpacesURLHash.js\");\n// import { plotClusters } from './clusters'\n\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n console.log(\"DOMContentLoaded\");\n (0,_fragmentLoader__WEBPACK_IMPORTED_MODULE_0__.loadFragments)();\n // init_memory_plot();\n (0,_syncHFSpacesURLHash__WEBPACK_IMPORTED_MODULE_1__.syncHFSpacesURLHash)();\n}, {\n once: true\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDZ0Q7QUFDVztBQUUzREUsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxZQUFNO0VBQ2hEQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztFQUMvQkwsOERBQWEsQ0FBQyxDQUFDO0VBQ2Y7RUFDQUMseUVBQW1CLENBQUMsQ0FBQztBQUN6QixDQUFDLEVBQUU7RUFBRUssSUFBSSxFQUFFO0FBQUssQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvZ3Bvc3QvLi9zcmMvaW5kZXguanM/YjYzNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBwbG90Q2x1c3RlcnMgfSBmcm9tICcuL2NsdXN0ZXJzJ1xyXG5pbXBvcnQgeyBsb2FkRnJhZ21lbnRzIH0gZnJvbSAnLi9mcmFnbWVudExvYWRlcidcclxuaW1wb3J0IHsgc3luY0hGU3BhY2VzVVJMSGFzaCB9IGZyb20gJy4vc3luY0hGU3BhY2VzVVJMSGFzaCdcclxuXHJcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiRE9NQ29udGVudExvYWRlZFwiKTtcclxuICAgIGxvYWRGcmFnbWVudHMoKTtcclxuICAgIC8vIGluaXRfbWVtb3J5X3Bsb3QoKTtcclxuICAgIHN5bmNIRlNwYWNlc1VSTEhhc2goKTtcclxufSwgeyBvbmNlOiB0cnVlIH0pO1xyXG4iXSwibmFtZXMiOlsibG9hZEZyYWdtZW50cyIsInN5bmNIRlNwYWNlc1VSTEhhc2giLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwib25jZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.js\n"); | |
/***/ }), | |
/***/ "./src/syncHFSpacesURLHash.js": | |
/*!************************************!*\ | |
!*** ./src/syncHFSpacesURLHash.js ***! | |
\************************************/ | |
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ syncHFSpacesURLHash: () => (/* binding */ syncHFSpacesURLHash)\n/* harmony export */ });\nvar queryArg = \"section\";\nfunction syncHFSpacesURLHash() {\n // Handle explicit section requests (don't update hash automatically on load)\n var hasExplicitRequest = handleExplicitSectionRequest();\n\n // Set up hash change monitoring\n updateHashBasedOnHashChange();\n\n // Always set up scroll monitoring to update hash during scrolling\n setupScrollMonitoring();\n\n // If no explicit request, we don't update the hash on initial load\n // The hash will only start updating when the user scrolls\n}\nfunction handleExplicitSectionRequest() {\n // Check for section parameter in URL\n var urlParams = new URLSearchParams(window.location.search);\n var sectionId = urlParams.get(queryArg);\n\n // If we have an explicit section request\n if (sectionId) {\n var targetElement = document.getElementById(sectionId);\n if (targetElement) {\n // Slight delay to ensure the browser doesn't try to do its own scrolling first\n setTimeout(function () {\n targetElement.scrollIntoView();\n history.replaceState(null, null, \"#\".concat(sectionId));\n }, 100);\n }\n return true;\n }\n\n // No explicit section parameter found\n return false;\n}\nfunction setupScrollMonitoring() {\n // Variables to manage throttling\n var isScrolling = false;\n var lastKnownScrollPosition = 0;\n var initialScroll = true;\n\n // Add the scroll event listener\n window.addEventListener('scroll', function () {\n lastKnownScrollPosition = window.scrollY;\n if (!isScrolling) {\n window.requestAnimationFrame(function () {\n // Skip the first scroll event which might be browser's automatic scroll\n // to a hash on page load\n if (initialScroll) {\n initialScroll = false;\n } else {\n updateHashBasedOnScroll(lastKnownScrollPosition);\n }\n isScrolling = false;\n });\n }\n isScrolling = true;\n });\n}\n\n// Function to update the URL hash based on scroll position\nfunction updateHashBasedOnScroll(scrollPosition) {\n var closestHeading = findClosestHeading(scrollPosition);\n\n // Update the URL hash if we found a closest element\n if (closestHeading && closestHeading.id) {\n // Only update if the hash is different to avoid unnecessary operations\n if (window.location.hash !== \"#\".concat(closestHeading.id)) {\n silentlyUpdateHash(closestHeading.id);\n postMessageToHFSpaces(closestHeading.id);\n }\n }\n}\n\n// Find the closest heading to the current scroll position\nfunction findClosestHeading(scrollPosition) {\n // Get only heading elements with IDs that we want to track\n var headingsWithIds = Array.from(document.querySelectorAll('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]'));\n\n // Skip if there are no headings with IDs\n if (headingsWithIds.length === 0) return null;\n\n // Find the element closest to the middle of the viewport\n var closestHeading = null;\n var closestDistance = Infinity;\n var viewportMiddle = scrollPosition + window.innerHeight / 2;\n\n // Iterate through all headings to find the closest one\n headingsWithIds.forEach(function (heading) {\n var headingTop = heading.getBoundingClientRect().top + scrollPosition;\n var distance = Math.abs(headingTop - viewportMiddle);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestHeading = heading;\n }\n });\n return closestHeading;\n}\n\n// Update hash without triggering scroll or other side effects\nfunction silentlyUpdateHash(id) {\n history.replaceState(null, null, \"#\".concat(id));\n}\nfunction updateHashBasedOnHashChange() {\n window.addEventListener('hashchange', function () {\n var elementId = window.location.hash.slice(1);\n postMessageToHFSpaces(elementId);\n });\n}\nfunction postMessageToHFSpaces(elementId) {\n var parentOrigin = \"https://huggingface.co\";\n window.parent.postMessage({\n queryString: \"\".concat(queryArg, \"=\").concat(elementId)\n }, parentOrigin);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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L3NyYy9zeW5jSEZTcGFjZXNVUkxIYXNoLmpzPzY3MjciXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcXVlcnlBcmcgPSBcInNlY3Rpb25cIjtcclxuXHJcbmZ1bmN0aW9uIHN5bmNIRlNwYWNlc1VSTEhhc2goKSB7XHJcbiAgLy8gSGFuZGxlIGV4cGxpY2l0IHNlY3Rpb24gcmVxdWVzdHMgKGRvbid0IHVwZGF0ZSBoYXNoIGF1dG9tYXRpY2FsbHkgb24gbG9hZClcclxuICBjb25zdCBoYXNFeHBsaWNpdFJlcXVlc3QgPSBoYW5kbGVFeHBsaWNpdFNlY3Rpb25SZXF1ZXN0KCk7XHJcbiAgXHJcbiAgLy8gU2V0IHVwIGhhc2ggY2hhbmdlIG1vbml0b3JpbmdcclxuICB1cGRhdGVIYXNoQmFzZWRPbkhhc2hDaGFuZ2UoKTtcclxuICBcclxuICAvLyBBbHdheXMgc2V0IHVwIHNjcm9sbCBtb25pdG9yaW5nIHRvIHVwZGF0ZSBoYXNoIGR1cmluZyBzY3JvbGxpbmdcclxuICBzZXR1cFNjcm9sbE1vbml0b3JpbmcoKTtcclxuICBcclxuICAvLyBJZiBubyBleHBsaWNpdCByZXF1ZXN0LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGhhc2ggb24gaW5pdGlhbCBsb2FkXHJcbiAgLy8gVGhlIGhhc2ggd2lsbCBvbmx5IHN0YXJ0IHVwZGF0aW5nIHdoZW4gdGhlIHVzZXIgc2Nyb2xsc1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVFeHBsaWNpdFNlY3Rpb25SZXF1ZXN0KCkge1xyXG4gIC8vIENoZWNrIGZvciBzZWN0aW9uIHBhcmFtZXRlciBpbiBVUkxcclxuICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gIGNvbnN0IHNlY3Rpb25JZCA9IHVybFBhcmFtcy5nZXQocXVlcnlBcmcpO1xyXG4gIFxyXG4gIC8vIElmIHdlIGhhdmUgYW4gZXhwbGljaXQgc2VjdGlvbiByZXF1ZXN0XHJcbiAgaWYgKHNlY3Rpb25JZCkge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZCk7XHJcbiAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xyXG4gICAgICAvLyBTbGlnaHQgZGVsYXkgdG8gZW5zdXJlIHRoZSBicm93c2VyIGRvZXNuJ3QgdHJ5IHRvIGRvIGl0cyBvd24gc2Nyb2xsaW5nIGZpcnN0XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCBgIyR7c2VjdGlvbklkfWApO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIFxyXG4gIC8vIE5vIGV4cGxpY2l0IHNlY3Rpb24gcGFyYW1ldGVyIGZvdW5kXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXR1cFNjcm9sbE1vbml0b3JpbmcoKSB7XHJcbiAgLy8gVmFyaWFibGVzIHRvIG1hbmFnZSB0aHJvdHRsaW5nXHJcbiAgbGV0IGlzU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgbGV0IGxhc3RLbm93blNjcm9sbFBvc2l0aW9uID0gMDtcclxuICBsZXQgaW5pdGlhbFNjcm9sbCA9IHRydWU7XHJcbiAgXHJcbiAgLy8gQWRkIHRoZSBzY3JvbGwgZXZlbnQgbGlzdGVuZXJcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKSB7XHJcbiAgICBsYXN0S25vd25TY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgXHJcbiAgICBpZiAoIWlzU2Nyb2xsaW5nKSB7XHJcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgLy8gU2tpcCB0aGUgZmlyc3Qgc2Nyb2xsIGV2ZW50IHdoaWNoIG1pZ2h0IGJlIGJyb3dzZXIncyBhdXRvbWF0aWMgc2Nyb2xsXHJcbiAgICAgICAgLy8gdG8gYSBoYXNoIG9uIHBhZ2UgbG9hZFxyXG4gICAgICAgIGlmIChpbml0aWFsU2Nyb2xsKSB7XHJcbiAgICAgICAgICBpbml0aWFsU2Nyb2xsID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVwZGF0ZUhhc2hCYXNlZE9uU2Nyb2xsKGxhc3RLbm93blNjcm9sbFBvc2l0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaXNTY3JvbGxpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlzU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICB9KTtcclxufVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBVUkwgaGFzaCBiYXNlZCBvbiBzY3JvbGwgcG9zaXRpb25cclxuZnVuY3Rpb24gdXBkYXRlSGFzaEJhc2VkT25TY3JvbGwoc2Nyb2xsUG9zaXRpb24pIHtcclxuICBjb25zdCBjbG9zZXN0SGVhZGluZyA9IGZpbmRDbG9zZXN0SGVhZGluZyhzY3JvbGxQb3NpdGlvbik7XHJcbiAgXHJcbiAgLy8gVXBkYXRlIHRoZSBVUkwgaGFzaCBpZiB3ZSBmb3VuZCBhIGNsb3Nlc3QgZWxlbWVudFxyXG4gIGlmIChjbG9zZXN0SGVhZGluZyAmJiBjbG9zZXN0SGVhZGluZy5pZCkge1xyXG4gICAgLy8gT25seSB1cGRhdGUgaWYgdGhlIGhhc2ggaXMgZGlmZmVyZW50IHRvIGF2b2lkIHVubmVjZXNzYXJ5IG9wZXJhdGlvbnNcclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gYCMke2Nsb3Nlc3RIZWFkaW5nLmlkfWApIHtcclxuICAgICAgc2lsZW50bHlVcGRhdGVIYXNoKGNsb3Nlc3RIZWFkaW5nLmlkKTtcclxuICAgICAgcG9zdE1lc3NhZ2VUb0hGU3BhY2VzKGNsb3Nlc3RIZWFkaW5nLmlkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIEZpbmQgdGhlIGNsb3Nlc3QgaGVhZGluZyB0byB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb25cclxuZnVuY3Rpb24gZmluZENsb3Nlc3RIZWFkaW5nKHNjcm9sbFBvc2l0aW9uKSB7XHJcbiAgLy8gR2V0IG9ubHkgaGVhZGluZyBlbGVtZW50cyB3aXRoIElEcyB0aGF0IHdlIHdhbnQgdG8gdHJhY2tcclxuICBjb25zdCBoZWFkaW5nc1dpdGhJZHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gxW2lkXSwgaDJbaWRdLCBoM1tpZF0sIGg0W2lkXSwgaDVbaWRdLCBoNltpZF0nKSk7XHJcblxyXG4gIC8vIFNraXAgaWYgdGhlcmUgYXJlIG5vIGhlYWRpbmdzIHdpdGggSURzXHJcbiAgaWYgKGhlYWRpbmdzV2l0aElkcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAvLyBGaW5kIHRoZSBlbGVtZW50IGNsb3Nlc3QgdG8gdGhlIG1pZGRsZSBvZiB0aGUgdmlld3BvcnRcclxuICBsZXQgY2xvc2VzdEhlYWRpbmcgPSBudWxsO1xyXG4gIGxldCBjbG9zZXN0RGlzdGFuY2UgPSBJbmZpbml0eTtcclxuICBjb25zdCB2aWV3cG9ydE1pZGRsZSA9IHNjcm9sbFBvc2l0aW9uICsgd2luZG93LmlubmVySGVpZ2h0IC8gMjtcclxuICBcclxuICAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIGhlYWRpbmdzIHRvIGZpbmQgdGhlIGNsb3Nlc3Qgb25lXHJcbiAgaGVhZGluZ3NXaXRoSWRzLmZvckVhY2goaGVhZGluZyA9PiB7XHJcbiAgICBjb25zdCBoZWFkaW5nVG9wID0gaGVhZGluZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBzY3JvbGxQb3NpdGlvbjtcclxuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5hYnMoaGVhZGluZ1RvcCAtIHZpZXdwb3J0TWlkZGxlKTtcclxuICAgIFxyXG4gICAgaWYgKGRpc3RhbmNlIDwgY2xvc2VzdERpc3RhbmNlKSB7XHJcbiAgICAgIGNsb3Nlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xyXG4gICAgICBjbG9zZXN0SGVhZGluZyA9IGhlYWRpbmc7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgXHJcbiAgcmV0dXJuIGNsb3Nlc3RIZWFkaW5nO1xyXG59XHJcblxyXG4vLyBVcGRhdGUgaGFzaCB3aXRob3V0IHRyaWdnZXJpbmcgc2Nyb2xsIG9yIG90aGVyIHNpZGUgZWZmZWN0c1xyXG5mdW5jdGlvbiBzaWxlbnRseVVwZGF0ZUhhc2goaWQpIHtcclxuICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCBgIyR7aWR9YCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVwZGF0ZUhhc2hCYXNlZE9uSGFzaENoYW5nZSgpIHtcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsICgpID0+IHtcclxuICAgIGNvbnN0IGVsZW1lbnRJZCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xyXG4gICAgcG9zdE1lc3NhZ2VUb0hGU3BhY2VzKGVsZW1lbnRJZCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBvc3RNZXNzYWdlVG9IRlNwYWNlcyhlbGVtZW50SWQpIHtcclxuICBjb25zdCBwYXJlbnRPcmlnaW4gPSBcImh0dHBzOi8vaHVnZ2luZ2ZhY2UuY29cIjtcclxuICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgcXVlcnlTdHJpbmc6IGAke3F1ZXJ5QXJnfT0ke2VsZW1lbnRJZH1gIH0sIHBhcmVudE9yaWdpbik7XHJcbn1cclxuXHJcbmV4cG9ydCB7IHN5bmNIRlNwYWNlc1VSTEhhc2ggfTtcclxuIl0sIm5hbWVzIjpbInF1ZXJ5QXJnIiwic3luY0hGU3BhY2VzVVJMSGFzaCIsImhhc0V4cGxpY2l0UmVxdWVzdCIsImhhbmRsZUV4cGxpY2l0U2VjdGlvblJlcXVlc3QiLCJ1cGRhdGVIYXNoQmFzZWRPbkhhc2hDaGFuZ2UiLCJzZXR1cFNjcm9sbE1vbml0b3JpbmciLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInNlY3Rpb25JZCIsImdldCIsInRhcmdldEVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2V0VGltZW91dCIsInNjcm9sbEludG9WaWV3IiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsImNvbmNhdCIsImlzU2Nyb2xsaW5nIiwibGFzdEtub3duU2Nyb2xsUG9zaXRpb24iLCJpbml0aWFsU2Nyb2xsIiwiYWRkRXZlbnRMaXN0ZW5lciIsInNjcm9sbFkiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ1cGRhdGVIYXNoQmFzZWRPblNjcm9sbCIsInNjcm9sbFBvc2l0aW9uIiwiY2xvc2VzdEhlYWRpbmciLCJmaW5kQ2xvc2VzdEhlYWRpbmciLCJpZCIsImhhc2giLCJzaWxlbnRseVVwZGF0ZUhhc2giLCJwb3N0TWVzc2FnZVRvSEZTcGFjZXMiLCJoZWFkaW5nc1dpdGhJZHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY2xvc2VzdERpc3RhbmNlIiwiSW5maW5pdHkiLCJ2aWV3cG9ydE1pZGRsZSIsImlubmVySGVpZ2h0IiwiZm9yRWFjaCIsImhlYWRpbmciLCJoZWFkaW5nVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwiZGlzdGFuY2UiLCJNYXRoIiwiYWJzIiwiZWxlbWVudElkIiwic2xpY2UiLCJwYXJlbnRPcmlnaW4iLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInF1ZXJ5U3RyaW5nIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/syncHFSpacesURLHash.js\n"); | |
/***/ }) | |
/******/ }); | |
/************************************************************************/ | |
/******/ // 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; | |
/******/ } | |
/******/ | |
/************************************************************************/ | |
/******/ /* webpack/runtime/define property getters */ | |
/******/ (() => { | |
/******/ // define getter functions for harmony exports | |
/******/ __webpack_require__.d = (exports, definition) => { | |
/******/ for(var key in definition) { | |
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { | |
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); | |
/******/ } | |
/******/ } | |
/******/ }; | |
/******/ })(); | |
/******/ | |
/******/ /* webpack/runtime/hasOwnProperty shorthand */ | |
/******/ (() => { | |
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) | |
/******/ })(); | |
/******/ | |
/******/ /* webpack/runtime/make namespace object */ | |
/******/ (() => { | |
/******/ // define __esModule on exports | |
/******/ __webpack_require__.r = (exports) => { | |
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | |
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | |
/******/ } | |
/******/ Object.defineProperty(exports, '__esModule', { value: true }); | |
/******/ }; | |
/******/ })(); | |
/******/ | |
/************************************************************************/ | |
/******/ | |
/******/ // startup | |
/******/ // Load entry module and return exports | |
/******/ // This entry module can't be inlined because the eval-source-map devtool is used. | |
/******/ var __webpack_exports__ = __webpack_require__("./src/index.js"); | |
/******/ | |
/******/ })() | |
; |