diff --git a/.obsidian/plugins/rss-reader/main.js b/.obsidian/plugins/rss-reader/main.js
new file mode 100644
index 00000000..eb77ed26
--- /dev/null
+++ b/.obsidian/plugins/rss-reader/main.js
@@ -0,0 +1,15001 @@
+/*
+THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
+if you want to view the source, please visit the github repository of this plugin
+https://github.com/joethei/obisidian-rss
+*/
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __defProps = Object.defineProperties;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getOwnPropSymbols = Object.getOwnPropertySymbols;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __propIsEnum = Object.prototype.propertyIsEnumerable;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __spreadValues = (a, b) => {
+ for (var prop in b || (b = {}))
+ if (__hasOwnProp.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ if (__getOwnPropSymbols)
+ for (var prop of __getOwnPropSymbols(b)) {
+ if (__propIsEnum.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ }
+ return a;
+};
+var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
+var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __export = (target, all) => {
+ __markAsModule(target);
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __reExport = (target, module2, desc) => {
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
+ for (let key of __getOwnPropNames(module2))
+ if (!__hasOwnProp.call(target, key) && key !== "default")
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+ }
+ return target;
+};
+var __toModule = (module2) => {
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
+};
+var __async = (__this, __arguments, generator) => {
+ return new Promise((resolve, reject) => {
+ var fulfilled = (value) => {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ };
+ var rejected = (value) => {
+ try {
+ step(generator.throw(value));
+ } catch (e) {
+ reject(e);
+ }
+ };
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
+ step((generator = generator.apply(__this, __arguments)).next());
+ });
+};
+
+// node_modules/ts-md5/dist/md5.js
+var require_md5 = __commonJS({
+ "node_modules/ts-md5/dist/md5.js"(exports) {
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var Md54 = function() {
+ function Md55() {
+ this._dataLength = 0;
+ this._bufferLength = 0;
+ this._state = new Int32Array(4);
+ this._buffer = new ArrayBuffer(68);
+ this._buffer8 = new Uint8Array(this._buffer, 0, 68);
+ this._buffer32 = new Uint32Array(this._buffer, 0, 17);
+ this.start();
+ }
+ Md55.hashStr = function(str, raw) {
+ if (raw === void 0) {
+ raw = false;
+ }
+ return this.onePassHasher.start().appendStr(str).end(raw);
+ };
+ Md55.hashAsciiStr = function(str, raw) {
+ if (raw === void 0) {
+ raw = false;
+ }
+ return this.onePassHasher.start().appendAsciiStr(str).end(raw);
+ };
+ Md55._hex = function(x) {
+ var hc = Md55.hexChars;
+ var ho = Md55.hexOut;
+ var n;
+ var offset2;
+ var j;
+ var i;
+ for (i = 0; i < 4; i += 1) {
+ offset2 = i * 8;
+ n = x[i];
+ for (j = 0; j < 8; j += 2) {
+ ho[offset2 + 1 + j] = hc.charAt(n & 15);
+ n >>>= 4;
+ ho[offset2 + 0 + j] = hc.charAt(n & 15);
+ n >>>= 4;
+ }
+ }
+ return ho.join("");
+ };
+ Md55._md5cycle = function(x, k) {
+ var a = x[0];
+ var b = x[1];
+ var c = x[2];
+ var d = x[3];
+ a += (b & c | ~b & d) + k[0] - 680876936 | 0;
+ a = (a << 7 | a >>> 25) + b | 0;
+ d += (a & b | ~a & c) + k[1] - 389564586 | 0;
+ d = (d << 12 | d >>> 20) + a | 0;
+ c += (d & a | ~d & b) + k[2] + 606105819 | 0;
+ c = (c << 17 | c >>> 15) + d | 0;
+ b += (c & d | ~c & a) + k[3] - 1044525330 | 0;
+ b = (b << 22 | b >>> 10) + c | 0;
+ a += (b & c | ~b & d) + k[4] - 176418897 | 0;
+ a = (a << 7 | a >>> 25) + b | 0;
+ d += (a & b | ~a & c) + k[5] + 1200080426 | 0;
+ d = (d << 12 | d >>> 20) + a | 0;
+ c += (d & a | ~d & b) + k[6] - 1473231341 | 0;
+ c = (c << 17 | c >>> 15) + d | 0;
+ b += (c & d | ~c & a) + k[7] - 45705983 | 0;
+ b = (b << 22 | b >>> 10) + c | 0;
+ a += (b & c | ~b & d) + k[8] + 1770035416 | 0;
+ a = (a << 7 | a >>> 25) + b | 0;
+ d += (a & b | ~a & c) + k[9] - 1958414417 | 0;
+ d = (d << 12 | d >>> 20) + a | 0;
+ c += (d & a | ~d & b) + k[10] - 42063 | 0;
+ c = (c << 17 | c >>> 15) + d | 0;
+ b += (c & d | ~c & a) + k[11] - 1990404162 | 0;
+ b = (b << 22 | b >>> 10) + c | 0;
+ a += (b & c | ~b & d) + k[12] + 1804603682 | 0;
+ a = (a << 7 | a >>> 25) + b | 0;
+ d += (a & b | ~a & c) + k[13] - 40341101 | 0;
+ d = (d << 12 | d >>> 20) + a | 0;
+ c += (d & a | ~d & b) + k[14] - 1502002290 | 0;
+ c = (c << 17 | c >>> 15) + d | 0;
+ b += (c & d | ~c & a) + k[15] + 1236535329 | 0;
+ b = (b << 22 | b >>> 10) + c | 0;
+ a += (b & d | c & ~d) + k[1] - 165796510 | 0;
+ a = (a << 5 | a >>> 27) + b | 0;
+ d += (a & c | b & ~c) + k[6] - 1069501632 | 0;
+ d = (d << 9 | d >>> 23) + a | 0;
+ c += (d & b | a & ~b) + k[11] + 643717713 | 0;
+ c = (c << 14 | c >>> 18) + d | 0;
+ b += (c & a | d & ~a) + k[0] - 373897302 | 0;
+ b = (b << 20 | b >>> 12) + c | 0;
+ a += (b & d | c & ~d) + k[5] - 701558691 | 0;
+ a = (a << 5 | a >>> 27) + b | 0;
+ d += (a & c | b & ~c) + k[10] + 38016083 | 0;
+ d = (d << 9 | d >>> 23) + a | 0;
+ c += (d & b | a & ~b) + k[15] - 660478335 | 0;
+ c = (c << 14 | c >>> 18) + d | 0;
+ b += (c & a | d & ~a) + k[4] - 405537848 | 0;
+ b = (b << 20 | b >>> 12) + c | 0;
+ a += (b & d | c & ~d) + k[9] + 568446438 | 0;
+ a = (a << 5 | a >>> 27) + b | 0;
+ d += (a & c | b & ~c) + k[14] - 1019803690 | 0;
+ d = (d << 9 | d >>> 23) + a | 0;
+ c += (d & b | a & ~b) + k[3] - 187363961 | 0;
+ c = (c << 14 | c >>> 18) + d | 0;
+ b += (c & a | d & ~a) + k[8] + 1163531501 | 0;
+ b = (b << 20 | b >>> 12) + c | 0;
+ a += (b & d | c & ~d) + k[13] - 1444681467 | 0;
+ a = (a << 5 | a >>> 27) + b | 0;
+ d += (a & c | b & ~c) + k[2] - 51403784 | 0;
+ d = (d << 9 | d >>> 23) + a | 0;
+ c += (d & b | a & ~b) + k[7] + 1735328473 | 0;
+ c = (c << 14 | c >>> 18) + d | 0;
+ b += (c & a | d & ~a) + k[12] - 1926607734 | 0;
+ b = (b << 20 | b >>> 12) + c | 0;
+ a += (b ^ c ^ d) + k[5] - 378558 | 0;
+ a = (a << 4 | a >>> 28) + b | 0;
+ d += (a ^ b ^ c) + k[8] - 2022574463 | 0;
+ d = (d << 11 | d >>> 21) + a | 0;
+ c += (d ^ a ^ b) + k[11] + 1839030562 | 0;
+ c = (c << 16 | c >>> 16) + d | 0;
+ b += (c ^ d ^ a) + k[14] - 35309556 | 0;
+ b = (b << 23 | b >>> 9) + c | 0;
+ a += (b ^ c ^ d) + k[1] - 1530992060 | 0;
+ a = (a << 4 | a >>> 28) + b | 0;
+ d += (a ^ b ^ c) + k[4] + 1272893353 | 0;
+ d = (d << 11 | d >>> 21) + a | 0;
+ c += (d ^ a ^ b) + k[7] - 155497632 | 0;
+ c = (c << 16 | c >>> 16) + d | 0;
+ b += (c ^ d ^ a) + k[10] - 1094730640 | 0;
+ b = (b << 23 | b >>> 9) + c | 0;
+ a += (b ^ c ^ d) + k[13] + 681279174 | 0;
+ a = (a << 4 | a >>> 28) + b | 0;
+ d += (a ^ b ^ c) + k[0] - 358537222 | 0;
+ d = (d << 11 | d >>> 21) + a | 0;
+ c += (d ^ a ^ b) + k[3] - 722521979 | 0;
+ c = (c << 16 | c >>> 16) + d | 0;
+ b += (c ^ d ^ a) + k[6] + 76029189 | 0;
+ b = (b << 23 | b >>> 9) + c | 0;
+ a += (b ^ c ^ d) + k[9] - 640364487 | 0;
+ a = (a << 4 | a >>> 28) + b | 0;
+ d += (a ^ b ^ c) + k[12] - 421815835 | 0;
+ d = (d << 11 | d >>> 21) + a | 0;
+ c += (d ^ a ^ b) + k[15] + 530742520 | 0;
+ c = (c << 16 | c >>> 16) + d | 0;
+ b += (c ^ d ^ a) + k[2] - 995338651 | 0;
+ b = (b << 23 | b >>> 9) + c | 0;
+ a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;
+ a = (a << 6 | a >>> 26) + b | 0;
+ d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;
+ d = (d << 10 | d >>> 22) + a | 0;
+ c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;
+ c = (c << 15 | c >>> 17) + d | 0;
+ b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;
+ b = (b << 21 | b >>> 11) + c | 0;
+ a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;
+ a = (a << 6 | a >>> 26) + b | 0;
+ d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;
+ d = (d << 10 | d >>> 22) + a | 0;
+ c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;
+ c = (c << 15 | c >>> 17) + d | 0;
+ b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;
+ b = (b << 21 | b >>> 11) + c | 0;
+ a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;
+ a = (a << 6 | a >>> 26) + b | 0;
+ d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;
+ d = (d << 10 | d >>> 22) + a | 0;
+ c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;
+ c = (c << 15 | c >>> 17) + d | 0;
+ b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;
+ b = (b << 21 | b >>> 11) + c | 0;
+ a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;
+ a = (a << 6 | a >>> 26) + b | 0;
+ d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;
+ d = (d << 10 | d >>> 22) + a | 0;
+ c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;
+ c = (c << 15 | c >>> 17) + d | 0;
+ b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;
+ b = (b << 21 | b >>> 11) + c | 0;
+ x[0] = a + x[0] | 0;
+ x[1] = b + x[1] | 0;
+ x[2] = c + x[2] | 0;
+ x[3] = d + x[3] | 0;
+ };
+ Md55.prototype.start = function() {
+ this._dataLength = 0;
+ this._bufferLength = 0;
+ this._state.set(Md55.stateIdentity);
+ return this;
+ };
+ Md55.prototype.appendStr = function(str) {
+ var buf8 = this._buffer8;
+ var buf32 = this._buffer32;
+ var bufLen = this._bufferLength;
+ var code;
+ var i;
+ for (i = 0; i < str.length; i += 1) {
+ code = str.charCodeAt(i);
+ if (code < 128) {
+ buf8[bufLen++] = code;
+ } else if (code < 2048) {
+ buf8[bufLen++] = (code >>> 6) + 192;
+ buf8[bufLen++] = code & 63 | 128;
+ } else if (code < 55296 || code > 56319) {
+ buf8[bufLen++] = (code >>> 12) + 224;
+ buf8[bufLen++] = code >>> 6 & 63 | 128;
+ buf8[bufLen++] = code & 63 | 128;
+ } else {
+ code = (code - 55296) * 1024 + (str.charCodeAt(++i) - 56320) + 65536;
+ if (code > 1114111) {
+ throw new Error("Unicode standard supports code points up to U+10FFFF");
+ }
+ buf8[bufLen++] = (code >>> 18) + 240;
+ buf8[bufLen++] = code >>> 12 & 63 | 128;
+ buf8[bufLen++] = code >>> 6 & 63 | 128;
+ buf8[bufLen++] = code & 63 | 128;
+ }
+ if (bufLen >= 64) {
+ this._dataLength += 64;
+ Md55._md5cycle(this._state, buf32);
+ bufLen -= 64;
+ buf32[0] = buf32[16];
+ }
+ }
+ this._bufferLength = bufLen;
+ return this;
+ };
+ Md55.prototype.appendAsciiStr = function(str) {
+ var buf8 = this._buffer8;
+ var buf32 = this._buffer32;
+ var bufLen = this._bufferLength;
+ var i;
+ var j = 0;
+ for (; ; ) {
+ i = Math.min(str.length - j, 64 - bufLen);
+ while (i--) {
+ buf8[bufLen++] = str.charCodeAt(j++);
+ }
+ if (bufLen < 64) {
+ break;
+ }
+ this._dataLength += 64;
+ Md55._md5cycle(this._state, buf32);
+ bufLen = 0;
+ }
+ this._bufferLength = bufLen;
+ return this;
+ };
+ Md55.prototype.appendByteArray = function(input) {
+ var buf8 = this._buffer8;
+ var buf32 = this._buffer32;
+ var bufLen = this._bufferLength;
+ var i;
+ var j = 0;
+ for (; ; ) {
+ i = Math.min(input.length - j, 64 - bufLen);
+ while (i--) {
+ buf8[bufLen++] = input[j++];
+ }
+ if (bufLen < 64) {
+ break;
+ }
+ this._dataLength += 64;
+ Md55._md5cycle(this._state, buf32);
+ bufLen = 0;
+ }
+ this._bufferLength = bufLen;
+ return this;
+ };
+ Md55.prototype.getState = function() {
+ var s = this._state;
+ return {
+ buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),
+ buflen: this._bufferLength,
+ length: this._dataLength,
+ state: [s[0], s[1], s[2], s[3]]
+ };
+ };
+ Md55.prototype.setState = function(state) {
+ var buf = state.buffer;
+ var x = state.state;
+ var s = this._state;
+ var i;
+ this._dataLength = state.length;
+ this._bufferLength = state.buflen;
+ s[0] = x[0];
+ s[1] = x[1];
+ s[2] = x[2];
+ s[3] = x[3];
+ for (i = 0; i < buf.length; i += 1) {
+ this._buffer8[i] = buf.charCodeAt(i);
+ }
+ };
+ Md55.prototype.end = function(raw) {
+ if (raw === void 0) {
+ raw = false;
+ }
+ var bufLen = this._bufferLength;
+ var buf8 = this._buffer8;
+ var buf32 = this._buffer32;
+ var i = (bufLen >> 2) + 1;
+ this._dataLength += bufLen;
+ var dataBitsLen = this._dataLength * 8;
+ buf8[bufLen] = 128;
+ buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;
+ buf32.set(Md55.buffer32Identity.subarray(i), i);
+ if (bufLen > 55) {
+ Md55._md5cycle(this._state, buf32);
+ buf32.set(Md55.buffer32Identity);
+ }
+ if (dataBitsLen <= 4294967295) {
+ buf32[14] = dataBitsLen;
+ } else {
+ var matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);
+ if (matches === null) {
+ return;
+ }
+ var lo = parseInt(matches[2], 16);
+ var hi = parseInt(matches[1], 16) || 0;
+ buf32[14] = lo;
+ buf32[15] = hi;
+ }
+ Md55._md5cycle(this._state, buf32);
+ return raw ? this._state : Md55._hex(this._state);
+ };
+ Md55.stateIdentity = new Int32Array([1732584193, -271733879, -1732584194, 271733878]);
+ Md55.buffer32Identity = new Int32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
+ Md55.hexChars = "0123456789abcdef";
+ Md55.hexOut = [];
+ Md55.onePassHasher = new Md55();
+ return Md55;
+ }();
+ exports.Md5 = Md54;
+ if (Md54.hashStr("hello") !== "5d41402abc4b2a76b9719d911017c592") {
+ throw new Error("Md5 self test failed.");
+ }
+ }
+});
+
+// node_modules/feather-icons/dist/feather.js
+var require_feather = __commonJS({
+ "node_modules/feather-icons/dist/feather.js"(exports, module2) {
+ (function webpackUniversalModuleDefinition(root, factory) {
+ if (typeof exports === "object" && typeof module2 === "object")
+ module2.exports = factory();
+ else if (typeof define === "function" && define.amd)
+ define([], factory);
+ else if (typeof exports === "object")
+ exports["feather"] = factory();
+ else
+ root["feather"] = factory();
+ })(typeof self !== "undefined" ? self : exports, function() {
+ return function(modules) {
+ var installedModules = {};
+ function __webpack_require__(moduleId) {
+ if (installedModules[moduleId]) {
+ return installedModules[moduleId].exports;
+ }
+ var module3 = installedModules[moduleId] = {
+ i: moduleId,
+ l: false,
+ exports: {}
+ };
+ modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__);
+ module3.l = true;
+ return module3.exports;
+ }
+ __webpack_require__.m = modules;
+ __webpack_require__.c = installedModules;
+ __webpack_require__.d = function(exports2, name, getter) {
+ if (!__webpack_require__.o(exports2, name)) {
+ Object.defineProperty(exports2, name, {
+ configurable: false,
+ enumerable: true,
+ get: getter
+ });
+ }
+ };
+ __webpack_require__.r = function(exports2) {
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ };
+ __webpack_require__.n = function(module3) {
+ var getter = module3 && module3.__esModule ? function getDefault() {
+ return module3["default"];
+ } : function getModuleExports() {
+ return module3;
+ };
+ __webpack_require__.d(getter, "a", getter);
+ return getter;
+ };
+ __webpack_require__.o = function(object, property) {
+ return Object.prototype.hasOwnProperty.call(object, property);
+ };
+ __webpack_require__.p = "";
+ return __webpack_require__(__webpack_require__.s = 0);
+ }({
+ "./dist/icons.json": function(module3) {
+ module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' };
+ },
+ "./node_modules/classnames/dedupe.js": function(module3, exports2, __webpack_require__) {
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
+ (function() {
+ "use strict";
+ var classNames = function() {
+ function StorageObject() {
+ }
+ StorageObject.prototype = Object.create(null);
+ function _parseArray(resultSet, array) {
+ var length = array.length;
+ for (var i = 0; i < length; ++i) {
+ _parse(resultSet, array[i]);
+ }
+ }
+ var hasOwn = {}.hasOwnProperty;
+ function _parseNumber(resultSet, num) {
+ resultSet[num] = true;
+ }
+ function _parseObject(resultSet, object) {
+ for (var k in object) {
+ if (hasOwn.call(object, k)) {
+ resultSet[k] = !!object[k];
+ }
+ }
+ }
+ var SPACE = /\s+/;
+ function _parseString(resultSet, str) {
+ var array = str.split(SPACE);
+ var length = array.length;
+ for (var i = 0; i < length; ++i) {
+ resultSet[array[i]] = true;
+ }
+ }
+ function _parse(resultSet, arg) {
+ if (!arg)
+ return;
+ var argType = typeof arg;
+ if (argType === "string") {
+ _parseString(resultSet, arg);
+ } else if (Array.isArray(arg)) {
+ _parseArray(resultSet, arg);
+ } else if (argType === "object") {
+ _parseObject(resultSet, arg);
+ } else if (argType === "number") {
+ _parseNumber(resultSet, arg);
+ }
+ }
+ function _classNames() {
+ var len = arguments.length;
+ var args = Array(len);
+ for (var i = 0; i < len; i++) {
+ args[i] = arguments[i];
+ }
+ var classSet = new StorageObject();
+ _parseArray(classSet, args);
+ var list = [];
+ for (var k in classSet) {
+ if (classSet[k]) {
+ list.push(k);
+ }
+ }
+ return list.join(" ");
+ }
+ return _classNames;
+ }();
+ if (typeof module3 !== "undefined" && module3.exports) {
+ module3.exports = classNames;
+ } else if (true) {
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
+ return classNames;
+ }.apply(exports2, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+ } else {
+ }
+ })();
+ },
+ "./node_modules/core-js/es/array/from.js": function(module3, exports2, __webpack_require__) {
+ __webpack_require__("./node_modules/core-js/modules/es.string.iterator.js");
+ __webpack_require__("./node_modules/core-js/modules/es.array.from.js");
+ var path = __webpack_require__("./node_modules/core-js/internals/path.js");
+ module3.exports = path.Array.from;
+ },
+ "./node_modules/core-js/internals/a-function.js": function(module3, exports2) {
+ module3.exports = function(it) {
+ if (typeof it != "function") {
+ throw TypeError(String(it) + " is not a function");
+ }
+ return it;
+ };
+ },
+ "./node_modules/core-js/internals/an-object.js": function(module3, exports2, __webpack_require__) {
+ var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
+ module3.exports = function(it) {
+ if (!isObject(it)) {
+ throw TypeError(String(it) + " is not an object");
+ }
+ return it;
+ };
+ },
+ "./node_modules/core-js/internals/array-from.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var bind = __webpack_require__("./node_modules/core-js/internals/bind-context.js");
+ var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js");
+ var callWithSafeIterationClosing = __webpack_require__("./node_modules/core-js/internals/call-with-safe-iteration-closing.js");
+ var isArrayIteratorMethod = __webpack_require__("./node_modules/core-js/internals/is-array-iterator-method.js");
+ var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js");
+ var createProperty = __webpack_require__("./node_modules/core-js/internals/create-property.js");
+ var getIteratorMethod = __webpack_require__("./node_modules/core-js/internals/get-iterator-method.js");
+ module3.exports = function from(arrayLike) {
+ var O = toObject(arrayLike);
+ var C = typeof this == "function" ? this : Array;
+ var argumentsLength = arguments.length;
+ var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
+ var mapping = mapfn !== void 0;
+ var index = 0;
+ var iteratorMethod = getIteratorMethod(O);
+ var length, result, step, iterator;
+ if (mapping)
+ mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2);
+ if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
+ iterator = iteratorMethod.call(O);
+ result = new C();
+ for (; !(step = iterator.next()).done; index++) {
+ createProperty(result, index, mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value);
+ }
+ } else {
+ length = toLength(O.length);
+ result = new C(length);
+ for (; length > index; index++) {
+ createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
+ }
+ }
+ result.length = index;
+ return result;
+ };
+ },
+ "./node_modules/core-js/internals/array-includes.js": function(module3, exports2, __webpack_require__) {
+ var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
+ var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js");
+ var toAbsoluteIndex = __webpack_require__("./node_modules/core-js/internals/to-absolute-index.js");
+ module3.exports = function(IS_INCLUDES) {
+ return function($this, el, fromIndex) {
+ var O = toIndexedObject($this);
+ var length = toLength(O.length);
+ var index = toAbsoluteIndex(fromIndex, length);
+ var value;
+ if (IS_INCLUDES && el != el)
+ while (length > index) {
+ value = O[index++];
+ if (value != value)
+ return true;
+ }
+ else
+ for (; length > index; index++)
+ if (IS_INCLUDES || index in O) {
+ if (O[index] === el)
+ return IS_INCLUDES || index || 0;
+ }
+ return !IS_INCLUDES && -1;
+ };
+ };
+ },
+ "./node_modules/core-js/internals/bind-context.js": function(module3, exports2, __webpack_require__) {
+ var aFunction = __webpack_require__("./node_modules/core-js/internals/a-function.js");
+ module3.exports = function(fn2, that, length) {
+ aFunction(fn2);
+ if (that === void 0)
+ return fn2;
+ switch (length) {
+ case 0:
+ return function() {
+ return fn2.call(that);
+ };
+ case 1:
+ return function(a) {
+ return fn2.call(that, a);
+ };
+ case 2:
+ return function(a, b) {
+ return fn2.call(that, a, b);
+ };
+ case 3:
+ return function(a, b, c) {
+ return fn2.call(that, a, b, c);
+ };
+ }
+ return function() {
+ return fn2.apply(that, arguments);
+ };
+ };
+ },
+ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": function(module3, exports2, __webpack_require__) {
+ var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
+ module3.exports = function(iterator, fn2, value, ENTRIES) {
+ try {
+ return ENTRIES ? fn2(anObject(value)[0], value[1]) : fn2(value);
+ } catch (error) {
+ var returnMethod = iterator["return"];
+ if (returnMethod !== void 0)
+ anObject(returnMethod.call(iterator));
+ throw error;
+ }
+ };
+ },
+ "./node_modules/core-js/internals/check-correctness-of-iteration.js": function(module3, exports2, __webpack_require__) {
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var ITERATOR = wellKnownSymbol("iterator");
+ var SAFE_CLOSING = false;
+ try {
+ var called = 0;
+ var iteratorWithReturn = {
+ next: function() {
+ return { done: !!called++ };
+ },
+ "return": function() {
+ SAFE_CLOSING = true;
+ }
+ };
+ iteratorWithReturn[ITERATOR] = function() {
+ return this;
+ };
+ Array.from(iteratorWithReturn, function() {
+ throw 2;
+ });
+ } catch (error) {
+ }
+ module3.exports = function(exec, SKIP_CLOSING) {
+ if (!SKIP_CLOSING && !SAFE_CLOSING)
+ return false;
+ var ITERATION_SUPPORT = false;
+ try {
+ var object = {};
+ object[ITERATOR] = function() {
+ return {
+ next: function() {
+ return { done: ITERATION_SUPPORT = true };
+ }
+ };
+ };
+ exec(object);
+ } catch (error) {
+ }
+ return ITERATION_SUPPORT;
+ };
+ },
+ "./node_modules/core-js/internals/classof-raw.js": function(module3, exports2) {
+ var toString = {}.toString;
+ module3.exports = function(it) {
+ return toString.call(it).slice(8, -1);
+ };
+ },
+ "./node_modules/core-js/internals/classof.js": function(module3, exports2, __webpack_require__) {
+ var classofRaw = __webpack_require__("./node_modules/core-js/internals/classof-raw.js");
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var TO_STRING_TAG = wellKnownSymbol("toStringTag");
+ var CORRECT_ARGUMENTS = classofRaw(function() {
+ return arguments;
+ }()) == "Arguments";
+ var tryGet = function(it, key) {
+ try {
+ return it[key];
+ } catch (error) {
+ }
+ };
+ module3.exports = function(it) {
+ var O, tag, result;
+ return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result;
+ };
+ },
+ "./node_modules/core-js/internals/copy-constructor-properties.js": function(module3, exports2, __webpack_require__) {
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var ownKeys = __webpack_require__("./node_modules/core-js/internals/own-keys.js");
+ var getOwnPropertyDescriptorModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js");
+ var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
+ module3.exports = function(target, source) {
+ var keys = ownKeys(source);
+ var defineProperty = definePropertyModule.f;
+ var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ if (!has(target, key))
+ defineProperty(target, key, getOwnPropertyDescriptor(source, key));
+ }
+ };
+ },
+ "./node_modules/core-js/internals/correct-prototype-getter.js": function(module3, exports2, __webpack_require__) {
+ var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
+ module3.exports = !fails(function() {
+ function F() {
+ }
+ F.prototype.constructor = null;
+ return Object.getPrototypeOf(new F()) !== F.prototype;
+ });
+ },
+ "./node_modules/core-js/internals/create-iterator-constructor.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var IteratorPrototype = __webpack_require__("./node_modules/core-js/internals/iterators-core.js").IteratorPrototype;
+ var create = __webpack_require__("./node_modules/core-js/internals/object-create.js");
+ var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
+ var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js");
+ var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
+ var returnThis = function() {
+ return this;
+ };
+ module3.exports = function(IteratorConstructor, NAME, next) {
+ var TO_STRING_TAG = NAME + " Iterator";
+ IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
+ setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
+ Iterators[TO_STRING_TAG] = returnThis;
+ return IteratorConstructor;
+ };
+ },
+ "./node_modules/core-js/internals/create-property-descriptor.js": function(module3, exports2) {
+ module3.exports = function(bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value
+ };
+ };
+ },
+ "./node_modules/core-js/internals/create-property.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
+ var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
+ var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
+ module3.exports = function(object, key, value) {
+ var propertyKey = toPrimitive(key);
+ if (propertyKey in object)
+ definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
+ else
+ object[propertyKey] = value;
+ };
+ },
+ "./node_modules/core-js/internals/define-iterator.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var $ = __webpack_require__("./node_modules/core-js/internals/export.js");
+ var createIteratorConstructor = __webpack_require__("./node_modules/core-js/internals/create-iterator-constructor.js");
+ var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js");
+ var setPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-set-prototype-of.js");
+ var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js");
+ var hide2 = __webpack_require__("./node_modules/core-js/internals/hide.js");
+ var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js");
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
+ var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
+ var IteratorsCore = __webpack_require__("./node_modules/core-js/internals/iterators-core.js");
+ var IteratorPrototype = IteratorsCore.IteratorPrototype;
+ var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
+ var ITERATOR = wellKnownSymbol("iterator");
+ var KEYS = "keys";
+ var VALUES = "values";
+ var ENTRIES = "entries";
+ var returnThis = function() {
+ return this;
+ };
+ module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
+ createIteratorConstructor(IteratorConstructor, NAME, next);
+ var getIterationMethod = function(KIND) {
+ if (KIND === DEFAULT && defaultIterator)
+ return defaultIterator;
+ if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)
+ return IterablePrototype[KIND];
+ switch (KIND) {
+ case KEYS:
+ return function keys() {
+ return new IteratorConstructor(this, KIND);
+ };
+ case VALUES:
+ return function values2() {
+ return new IteratorConstructor(this, KIND);
+ };
+ case ENTRIES:
+ return function entries() {
+ return new IteratorConstructor(this, KIND);
+ };
+ }
+ return function() {
+ return new IteratorConstructor(this);
+ };
+ };
+ var TO_STRING_TAG = NAME + " Iterator";
+ var INCORRECT_VALUES_NAME = false;
+ var IterablePrototype = Iterable.prototype;
+ var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT];
+ var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
+ var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
+ var CurrentIteratorPrototype, methods, KEY;
+ if (anyNativeIterator) {
+ CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
+ if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
+ if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
+ if (setPrototypeOf) {
+ setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
+ } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") {
+ hide2(CurrentIteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
+ if (IS_PURE)
+ Iterators[TO_STRING_TAG] = returnThis;
+ }
+ }
+ if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
+ INCORRECT_VALUES_NAME = true;
+ defaultIterator = function values2() {
+ return nativeIterator.call(this);
+ };
+ }
+ if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
+ hide2(IterablePrototype, ITERATOR, defaultIterator);
+ }
+ Iterators[NAME] = defaultIterator;
+ if (DEFAULT) {
+ methods = {
+ values: getIterationMethod(VALUES),
+ keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
+ entries: getIterationMethod(ENTRIES)
+ };
+ if (FORCED)
+ for (KEY in methods) {
+ if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
+ redefine(IterablePrototype, KEY, methods[KEY]);
+ }
+ }
+ else
+ $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
+ }
+ return methods;
+ };
+ },
+ "./node_modules/core-js/internals/descriptors.js": function(module3, exports2, __webpack_require__) {
+ var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
+ module3.exports = !fails(function() {
+ return Object.defineProperty({}, "a", { get: function() {
+ return 7;
+ } }).a != 7;
+ });
+ },
+ "./node_modules/core-js/internals/document-create-element.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
+ var document2 = global2.document;
+ var exist = isObject(document2) && isObject(document2.createElement);
+ module3.exports = function(it) {
+ return exist ? document2.createElement(it) : {};
+ };
+ },
+ "./node_modules/core-js/internals/enum-bug-keys.js": function(module3, exports2) {
+ module3.exports = [
+ "constructor",
+ "hasOwnProperty",
+ "isPrototypeOf",
+ "propertyIsEnumerable",
+ "toLocaleString",
+ "toString",
+ "valueOf"
+ ];
+ },
+ "./node_modules/core-js/internals/export.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var getOwnPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
+ var hide2 = __webpack_require__("./node_modules/core-js/internals/hide.js");
+ var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js");
+ var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
+ var copyConstructorProperties = __webpack_require__("./node_modules/core-js/internals/copy-constructor-properties.js");
+ var isForced = __webpack_require__("./node_modules/core-js/internals/is-forced.js");
+ module3.exports = function(options, source) {
+ var TARGET = options.target;
+ var GLOBAL = options.global;
+ var STATIC = options.stat;
+ var FORCED, target, key, targetProperty, sourceProperty, descriptor;
+ if (GLOBAL) {
+ target = global2;
+ } else if (STATIC) {
+ target = global2[TARGET] || setGlobal(TARGET, {});
+ } else {
+ target = (global2[TARGET] || {}).prototype;
+ }
+ if (target)
+ for (key in source) {
+ sourceProperty = source[key];
+ if (options.noTargetGet) {
+ descriptor = getOwnPropertyDescriptor(target, key);
+ targetProperty = descriptor && descriptor.value;
+ } else
+ targetProperty = target[key];
+ FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced);
+ if (!FORCED && targetProperty !== void 0) {
+ if (typeof sourceProperty === typeof targetProperty)
+ continue;
+ copyConstructorProperties(sourceProperty, targetProperty);
+ }
+ if (options.sham || targetProperty && targetProperty.sham) {
+ hide2(sourceProperty, "sham", true);
+ }
+ redefine(target, key, sourceProperty, options);
+ }
+ };
+ },
+ "./node_modules/core-js/internals/fails.js": function(module3, exports2) {
+ module3.exports = function(exec) {
+ try {
+ return !!exec();
+ } catch (error) {
+ return true;
+ }
+ };
+ },
+ "./node_modules/core-js/internals/function-to-string.js": function(module3, exports2, __webpack_require__) {
+ var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
+ module3.exports = shared("native-function-to-string", Function.toString);
+ },
+ "./node_modules/core-js/internals/get-iterator-method.js": function(module3, exports2, __webpack_require__) {
+ var classof = __webpack_require__("./node_modules/core-js/internals/classof.js");
+ var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var ITERATOR = wellKnownSymbol("iterator");
+ module3.exports = function(it) {
+ if (it != void 0)
+ return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)];
+ };
+ },
+ "./node_modules/core-js/internals/global.js": function(module3, exports2, __webpack_require__) {
+ (function(global2) {
+ var O = "object";
+ var check = function(it) {
+ return it && it.Math == Math && it;
+ };
+ module3.exports = check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || Function("return this")();
+ }).call(this, __webpack_require__("./node_modules/webpack/buildin/global.js"));
+ },
+ "./node_modules/core-js/internals/has.js": function(module3, exports2) {
+ var hasOwnProperty = {}.hasOwnProperty;
+ module3.exports = function(it, key) {
+ return hasOwnProperty.call(it, key);
+ };
+ },
+ "./node_modules/core-js/internals/hidden-keys.js": function(module3, exports2) {
+ module3.exports = {};
+ },
+ "./node_modules/core-js/internals/hide.js": function(module3, exports2, __webpack_require__) {
+ var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
+ var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
+ var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
+ module3.exports = DESCRIPTORS ? function(object, key, value) {
+ return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
+ } : function(object, key, value) {
+ object[key] = value;
+ return object;
+ };
+ },
+ "./node_modules/core-js/internals/html.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var document2 = global2.document;
+ module3.exports = document2 && document2.documentElement;
+ },
+ "./node_modules/core-js/internals/ie8-dom-define.js": function(module3, exports2, __webpack_require__) {
+ var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
+ var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
+ var createElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js");
+ module3.exports = !DESCRIPTORS && !fails(function() {
+ return Object.defineProperty(createElement("div"), "a", {
+ get: function() {
+ return 7;
+ }
+ }).a != 7;
+ });
+ },
+ "./node_modules/core-js/internals/indexed-object.js": function(module3, exports2, __webpack_require__) {
+ var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
+ var classof = __webpack_require__("./node_modules/core-js/internals/classof-raw.js");
+ var split = "".split;
+ module3.exports = fails(function() {
+ return !Object("z").propertyIsEnumerable(0);
+ }) ? function(it) {
+ return classof(it) == "String" ? split.call(it, "") : Object(it);
+ } : Object;
+ },
+ "./node_modules/core-js/internals/internal-state.js": function(module3, exports2, __webpack_require__) {
+ var NATIVE_WEAK_MAP = __webpack_require__("./node_modules/core-js/internals/native-weak-map.js");
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
+ var hide2 = __webpack_require__("./node_modules/core-js/internals/hide.js");
+ var objectHas = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
+ var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
+ var WeakMap = global2.WeakMap;
+ var set, get, has;
+ var enforce = function(it) {
+ return has(it) ? get(it) : set(it, {});
+ };
+ var getterFor = function(TYPE) {
+ return function(it) {
+ var state;
+ if (!isObject(it) || (state = get(it)).type !== TYPE) {
+ throw TypeError("Incompatible receiver, " + TYPE + " required");
+ }
+ return state;
+ };
+ };
+ if (NATIVE_WEAK_MAP) {
+ var store = new WeakMap();
+ var wmget = store.get;
+ var wmhas = store.has;
+ var wmset = store.set;
+ set = function(it, metadata) {
+ wmset.call(store, it, metadata);
+ return metadata;
+ };
+ get = function(it) {
+ return wmget.call(store, it) || {};
+ };
+ has = function(it) {
+ return wmhas.call(store, it);
+ };
+ } else {
+ var STATE = sharedKey("state");
+ hiddenKeys[STATE] = true;
+ set = function(it, metadata) {
+ hide2(it, STATE, metadata);
+ return metadata;
+ };
+ get = function(it) {
+ return objectHas(it, STATE) ? it[STATE] : {};
+ };
+ has = function(it) {
+ return objectHas(it, STATE);
+ };
+ }
+ module3.exports = {
+ set,
+ get,
+ has,
+ enforce,
+ getterFor
+ };
+ },
+ "./node_modules/core-js/internals/is-array-iterator-method.js": function(module3, exports2, __webpack_require__) {
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
+ var ITERATOR = wellKnownSymbol("iterator");
+ var ArrayPrototype = Array.prototype;
+ module3.exports = function(it) {
+ return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
+ };
+ },
+ "./node_modules/core-js/internals/is-forced.js": function(module3, exports2, __webpack_require__) {
+ var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
+ var replacement = /#|\.prototype\./;
+ var isForced = function(feature, detection) {
+ var value = data[normalize(feature)];
+ return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection;
+ };
+ var normalize = isForced.normalize = function(string) {
+ return String(string).replace(replacement, ".").toLowerCase();
+ };
+ var data = isForced.data = {};
+ var NATIVE = isForced.NATIVE = "N";
+ var POLYFILL = isForced.POLYFILL = "P";
+ module3.exports = isForced;
+ },
+ "./node_modules/core-js/internals/is-object.js": function(module3, exports2) {
+ module3.exports = function(it) {
+ return typeof it === "object" ? it !== null : typeof it === "function";
+ };
+ },
+ "./node_modules/core-js/internals/is-pure.js": function(module3, exports2) {
+ module3.exports = false;
+ },
+ "./node_modules/core-js/internals/iterators-core.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js");
+ var hide2 = __webpack_require__("./node_modules/core-js/internals/hide.js");
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
+ var ITERATOR = wellKnownSymbol("iterator");
+ var BUGGY_SAFARI_ITERATORS = false;
+ var returnThis = function() {
+ return this;
+ };
+ var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
+ if ([].keys) {
+ arrayIterator = [].keys();
+ if (!("next" in arrayIterator))
+ BUGGY_SAFARI_ITERATORS = true;
+ else {
+ PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
+ if (PrototypeOfArrayIteratorPrototype !== Object.prototype)
+ IteratorPrototype = PrototypeOfArrayIteratorPrototype;
+ }
+ }
+ if (IteratorPrototype == void 0)
+ IteratorPrototype = {};
+ if (!IS_PURE && !has(IteratorPrototype, ITERATOR))
+ hide2(IteratorPrototype, ITERATOR, returnThis);
+ module3.exports = {
+ IteratorPrototype,
+ BUGGY_SAFARI_ITERATORS
+ };
+ },
+ "./node_modules/core-js/internals/iterators.js": function(module3, exports2) {
+ module3.exports = {};
+ },
+ "./node_modules/core-js/internals/native-symbol.js": function(module3, exports2, __webpack_require__) {
+ var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
+ module3.exports = !!Object.getOwnPropertySymbols && !fails(function() {
+ return !String(Symbol());
+ });
+ },
+ "./node_modules/core-js/internals/native-weak-map.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js");
+ var WeakMap = global2.WeakMap;
+ module3.exports = typeof WeakMap === "function" && /native code/.test(nativeFunctionToString.call(WeakMap));
+ },
+ "./node_modules/core-js/internals/object-create.js": function(module3, exports2, __webpack_require__) {
+ var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
+ var defineProperties = __webpack_require__("./node_modules/core-js/internals/object-define-properties.js");
+ var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
+ var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
+ var html = __webpack_require__("./node_modules/core-js/internals/html.js");
+ var documentCreateElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js");
+ var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
+ var IE_PROTO = sharedKey("IE_PROTO");
+ var PROTOTYPE = "prototype";
+ var Empty = function() {
+ };
+ var createDict = function() {
+ var iframe = documentCreateElement("iframe");
+ var length = enumBugKeys.length;
+ var lt = "<";
+ var script = "script";
+ var gt = ">";
+ var js = "java" + script + ":";
+ var iframeDocument;
+ iframe.style.display = "none";
+ html.appendChild(iframe);
+ iframe.src = String(js);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt);
+ iframeDocument.close();
+ createDict = iframeDocument.F;
+ while (length--)
+ delete createDict[PROTOTYPE][enumBugKeys[length]];
+ return createDict();
+ };
+ module3.exports = Object.create || function create(O, Properties) {
+ var result;
+ if (O !== null) {
+ Empty[PROTOTYPE] = anObject(O);
+ result = new Empty();
+ Empty[PROTOTYPE] = null;
+ result[IE_PROTO] = O;
+ } else
+ result = createDict();
+ return Properties === void 0 ? result : defineProperties(result, Properties);
+ };
+ hiddenKeys[IE_PROTO] = true;
+ },
+ "./node_modules/core-js/internals/object-define-properties.js": function(module3, exports2, __webpack_require__) {
+ var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
+ var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
+ var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
+ var objectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys.js");
+ module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
+ anObject(O);
+ var keys = objectKeys(Properties);
+ var length = keys.length;
+ var i = 0;
+ var key;
+ while (length > i)
+ definePropertyModule.f(O, key = keys[i++], Properties[key]);
+ return O;
+ };
+ },
+ "./node_modules/core-js/internals/object-define-property.js": function(module3, exports2, __webpack_require__) {
+ var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
+ var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js");
+ var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
+ var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
+ var nativeDefineProperty = Object.defineProperty;
+ exports2.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if (IE8_DOM_DEFINE)
+ try {
+ return nativeDefineProperty(O, P, Attributes);
+ } catch (error) {
+ }
+ if ("get" in Attributes || "set" in Attributes)
+ throw TypeError("Accessors not supported");
+ if ("value" in Attributes)
+ O[P] = Attributes.value;
+ return O;
+ };
+ },
+ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": function(module3, exports2, __webpack_require__) {
+ var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
+ var propertyIsEnumerableModule = __webpack_require__("./node_modules/core-js/internals/object-property-is-enumerable.js");
+ var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
+ var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
+ var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js");
+ var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+ exports2.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
+ O = toIndexedObject(O);
+ P = toPrimitive(P, true);
+ if (IE8_DOM_DEFINE)
+ try {
+ return nativeGetOwnPropertyDescriptor(O, P);
+ } catch (error) {
+ }
+ if (has(O, P))
+ return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
+ };
+ },
+ "./node_modules/core-js/internals/object-get-own-property-names.js": function(module3, exports2, __webpack_require__) {
+ var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js");
+ var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
+ var hiddenKeys = enumBugKeys.concat("length", "prototype");
+ exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+ return internalObjectKeys(O, hiddenKeys);
+ };
+ },
+ "./node_modules/core-js/internals/object-get-own-property-symbols.js": function(module3, exports2) {
+ exports2.f = Object.getOwnPropertySymbols;
+ },
+ "./node_modules/core-js/internals/object-get-prototype-of.js": function(module3, exports2, __webpack_require__) {
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js");
+ var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
+ var CORRECT_PROTOTYPE_GETTER = __webpack_require__("./node_modules/core-js/internals/correct-prototype-getter.js");
+ var IE_PROTO = sharedKey("IE_PROTO");
+ var ObjectPrototype = Object.prototype;
+ module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) {
+ O = toObject(O);
+ if (has(O, IE_PROTO))
+ return O[IE_PROTO];
+ if (typeof O.constructor == "function" && O instanceof O.constructor) {
+ return O.constructor.prototype;
+ }
+ return O instanceof Object ? ObjectPrototype : null;
+ };
+ },
+ "./node_modules/core-js/internals/object-keys-internal.js": function(module3, exports2, __webpack_require__) {
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
+ var arrayIncludes = __webpack_require__("./node_modules/core-js/internals/array-includes.js");
+ var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
+ var arrayIndexOf = arrayIncludes(false);
+ module3.exports = function(object, names) {
+ var O = toIndexedObject(object);
+ var i = 0;
+ var result = [];
+ var key;
+ for (key in O)
+ !has(hiddenKeys, key) && has(O, key) && result.push(key);
+ while (names.length > i)
+ if (has(O, key = names[i++])) {
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+ };
+ },
+ "./node_modules/core-js/internals/object-keys.js": function(module3, exports2, __webpack_require__) {
+ var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js");
+ var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
+ module3.exports = Object.keys || function keys(O) {
+ return internalObjectKeys(O, enumBugKeys);
+ };
+ },
+ "./node_modules/core-js/internals/object-property-is-enumerable.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
+ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+ var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
+ exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
+ var descriptor = getOwnPropertyDescriptor(this, V);
+ return !!descriptor && descriptor.enumerable;
+ } : nativePropertyIsEnumerable;
+ },
+ "./node_modules/core-js/internals/object-set-prototype-of.js": function(module3, exports2, __webpack_require__) {
+ var validateSetPrototypeOfArguments = __webpack_require__("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");
+ module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
+ var correctSetter = false;
+ var test = {};
+ var setter;
+ try {
+ setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
+ setter.call(test, []);
+ correctSetter = test instanceof Array;
+ } catch (error) {
+ }
+ return function setPrototypeOf(O, proto) {
+ validateSetPrototypeOfArguments(O, proto);
+ if (correctSetter)
+ setter.call(O, proto);
+ else
+ O.__proto__ = proto;
+ return O;
+ };
+ }() : void 0);
+ },
+ "./node_modules/core-js/internals/own-keys.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var getOwnPropertyNamesModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-names.js");
+ var getOwnPropertySymbolsModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-symbols.js");
+ var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
+ var Reflect2 = global2.Reflect;
+ module3.exports = Reflect2 && Reflect2.ownKeys || function ownKeys(it) {
+ var keys = getOwnPropertyNamesModule.f(anObject(it));
+ var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
+ return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
+ };
+ },
+ "./node_modules/core-js/internals/path.js": function(module3, exports2, __webpack_require__) {
+ module3.exports = __webpack_require__("./node_modules/core-js/internals/global.js");
+ },
+ "./node_modules/core-js/internals/redefine.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
+ var hide2 = __webpack_require__("./node_modules/core-js/internals/hide.js");
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
+ var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js");
+ var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js");
+ var getInternalState = InternalStateModule.get;
+ var enforceInternalState = InternalStateModule.enforce;
+ var TEMPLATE = String(nativeFunctionToString).split("toString");
+ shared("inspectSource", function(it) {
+ return nativeFunctionToString.call(it);
+ });
+ (module3.exports = function(O, key, value, options) {
+ var unsafe = options ? !!options.unsafe : false;
+ var simple = options ? !!options.enumerable : false;
+ var noTargetGet = options ? !!options.noTargetGet : false;
+ if (typeof value == "function") {
+ if (typeof key == "string" && !has(value, "name"))
+ hide2(value, "name", key);
+ enforceInternalState(value).source = TEMPLATE.join(typeof key == "string" ? key : "");
+ }
+ if (O === global2) {
+ if (simple)
+ O[key] = value;
+ else
+ setGlobal(key, value);
+ return;
+ } else if (!unsafe) {
+ delete O[key];
+ } else if (!noTargetGet && O[key]) {
+ simple = true;
+ }
+ if (simple)
+ O[key] = value;
+ else
+ hide2(O, key, value);
+ })(Function.prototype, "toString", function toString() {
+ return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this);
+ });
+ },
+ "./node_modules/core-js/internals/require-object-coercible.js": function(module3, exports2) {
+ module3.exports = function(it) {
+ if (it == void 0)
+ throw TypeError("Can't call method on " + it);
+ return it;
+ };
+ },
+ "./node_modules/core-js/internals/set-global.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var hide2 = __webpack_require__("./node_modules/core-js/internals/hide.js");
+ module3.exports = function(key, value) {
+ try {
+ hide2(global2, key, value);
+ } catch (error) {
+ global2[key] = value;
+ }
+ return value;
+ };
+ },
+ "./node_modules/core-js/internals/set-to-string-tag.js": function(module3, exports2, __webpack_require__) {
+ var defineProperty = __webpack_require__("./node_modules/core-js/internals/object-define-property.js").f;
+ var has = __webpack_require__("./node_modules/core-js/internals/has.js");
+ var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
+ var TO_STRING_TAG = wellKnownSymbol("toStringTag");
+ module3.exports = function(it, TAG, STATIC) {
+ if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
+ defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
+ }
+ };
+ },
+ "./node_modules/core-js/internals/shared-key.js": function(module3, exports2, __webpack_require__) {
+ var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
+ var uid = __webpack_require__("./node_modules/core-js/internals/uid.js");
+ var keys = shared("keys");
+ module3.exports = function(key) {
+ return keys[key] || (keys[key] = uid(key));
+ };
+ },
+ "./node_modules/core-js/internals/shared.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
+ var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
+ var SHARED = "__core-js_shared__";
+ var store = global2[SHARED] || setGlobal(SHARED, {});
+ (module3.exports = function(key, value) {
+ return store[key] || (store[key] = value !== void 0 ? value : {});
+ })("versions", []).push({
+ version: "3.1.3",
+ mode: IS_PURE ? "pure" : "global",
+ copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)"
+ });
+ },
+ "./node_modules/core-js/internals/string-at.js": function(module3, exports2, __webpack_require__) {
+ var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
+ var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
+ module3.exports = function(that, pos, CONVERT_TO_STRING) {
+ var S = String(requireObjectCoercible(that));
+ var position = toInteger(pos);
+ var size = S.length;
+ var first, second;
+ if (position < 0 || position >= size)
+ return CONVERT_TO_STRING ? "" : void 0;
+ first = S.charCodeAt(position);
+ return first < 55296 || first > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536;
+ };
+ },
+ "./node_modules/core-js/internals/to-absolute-index.js": function(module3, exports2, __webpack_require__) {
+ var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
+ var max2 = Math.max;
+ var min2 = Math.min;
+ module3.exports = function(index, length) {
+ var integer = toInteger(index);
+ return integer < 0 ? max2(integer + length, 0) : min2(integer, length);
+ };
+ },
+ "./node_modules/core-js/internals/to-indexed-object.js": function(module3, exports2, __webpack_require__) {
+ var IndexedObject = __webpack_require__("./node_modules/core-js/internals/indexed-object.js");
+ var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
+ module3.exports = function(it) {
+ return IndexedObject(requireObjectCoercible(it));
+ };
+ },
+ "./node_modules/core-js/internals/to-integer.js": function(module3, exports2) {
+ var ceil = Math.ceil;
+ var floor = Math.floor;
+ module3.exports = function(argument) {
+ return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
+ };
+ },
+ "./node_modules/core-js/internals/to-length.js": function(module3, exports2, __webpack_require__) {
+ var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
+ var min2 = Math.min;
+ module3.exports = function(argument) {
+ return argument > 0 ? min2(toInteger(argument), 9007199254740991) : 0;
+ };
+ },
+ "./node_modules/core-js/internals/to-object.js": function(module3, exports2, __webpack_require__) {
+ var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
+ module3.exports = function(argument) {
+ return Object(requireObjectCoercible(argument));
+ };
+ },
+ "./node_modules/core-js/internals/to-primitive.js": function(module3, exports2, __webpack_require__) {
+ var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
+ module3.exports = function(it, S) {
+ if (!isObject(it))
+ return it;
+ var fn2, val;
+ if (S && typeof (fn2 = it.toString) == "function" && !isObject(val = fn2.call(it)))
+ return val;
+ if (typeof (fn2 = it.valueOf) == "function" && !isObject(val = fn2.call(it)))
+ return val;
+ if (!S && typeof (fn2 = it.toString) == "function" && !isObject(val = fn2.call(it)))
+ return val;
+ throw TypeError("Can't convert object to primitive value");
+ };
+ },
+ "./node_modules/core-js/internals/uid.js": function(module3, exports2) {
+ var id = 0;
+ var postfix = Math.random();
+ module3.exports = function(key) {
+ return "Symbol(".concat(key === void 0 ? "" : key, ")_", (++id + postfix).toString(36));
+ };
+ },
+ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": function(module3, exports2, __webpack_require__) {
+ var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
+ var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
+ module3.exports = function(O, proto) {
+ anObject(O);
+ if (!isObject(proto) && proto !== null) {
+ throw TypeError("Can't set " + String(proto) + " as a prototype");
+ }
+ };
+ },
+ "./node_modules/core-js/internals/well-known-symbol.js": function(module3, exports2, __webpack_require__) {
+ var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
+ var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
+ var uid = __webpack_require__("./node_modules/core-js/internals/uid.js");
+ var NATIVE_SYMBOL = __webpack_require__("./node_modules/core-js/internals/native-symbol.js");
+ var Symbol2 = global2.Symbol;
+ var store = shared("wks");
+ module3.exports = function(name) {
+ return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name));
+ };
+ },
+ "./node_modules/core-js/modules/es.array.from.js": function(module3, exports2, __webpack_require__) {
+ var $ = __webpack_require__("./node_modules/core-js/internals/export.js");
+ var from = __webpack_require__("./node_modules/core-js/internals/array-from.js");
+ var checkCorrectnessOfIteration = __webpack_require__("./node_modules/core-js/internals/check-correctness-of-iteration.js");
+ var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {
+ Array.from(iterable);
+ });
+ $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, {
+ from
+ });
+ },
+ "./node_modules/core-js/modules/es.string.iterator.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var codePointAt = __webpack_require__("./node_modules/core-js/internals/string-at.js");
+ var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js");
+ var defineIterator = __webpack_require__("./node_modules/core-js/internals/define-iterator.js");
+ var STRING_ITERATOR = "String Iterator";
+ var setInternalState = InternalStateModule.set;
+ var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
+ defineIterator(String, "String", function(iterated) {
+ setInternalState(this, {
+ type: STRING_ITERATOR,
+ string: String(iterated),
+ index: 0
+ });
+ }, function next() {
+ var state = getInternalState(this);
+ var string = state.string;
+ var index = state.index;
+ var point;
+ if (index >= string.length)
+ return { value: void 0, done: true };
+ point = codePointAt(string, index, true);
+ state.index += point.length;
+ return { value: point, done: false };
+ });
+ },
+ "./node_modules/webpack/buildin/global.js": function(module3, exports2) {
+ var g;
+ g = function() {
+ return this;
+ }();
+ try {
+ g = g || Function("return this")() || (1, eval)("this");
+ } catch (e) {
+ if (typeof window === "object")
+ g = window;
+ }
+ module3.exports = g;
+ },
+ "./src/default-attrs.json": function(module3) {
+ module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" };
+ },
+ "./src/icon.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", {
+ value: true
+ });
+ var _extends = Object.assign || function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+ var _createClass = function() {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor)
+ descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function(Constructor, protoProps, staticProps) {
+ if (protoProps)
+ defineProperties(Constructor.prototype, protoProps);
+ if (staticProps)
+ defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js");
+ var _dedupe2 = _interopRequireDefault(_dedupe);
+ var _defaultAttrs = __webpack_require__("./src/default-attrs.json");
+ var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+ function _classCallCheck(instance9, Constructor) {
+ if (!(instance9 instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+ var Icon = function() {
+ function Icon2(name, contents) {
+ var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
+ _classCallCheck(this, Icon2);
+ this.name = name;
+ this.contents = contents;
+ this.tags = tags;
+ this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name });
+ }
+ _createClass(Icon2, [{
+ key: "toSvg",
+ value: function toSvg() {
+ var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+ var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });
+ return "";
+ }
+ }, {
+ key: "toString",
+ value: function toString() {
+ return this.contents;
+ }
+ }]);
+ return Icon2;
+ }();
+ function attrsToString(attrs) {
+ return Object.keys(attrs).map(function(key) {
+ return key + '="' + attrs[key] + '"';
+ }).join(" ");
+ }
+ exports2.default = Icon;
+ },
+ "./src/icons.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", {
+ value: true
+ });
+ var _icon = __webpack_require__("./src/icon.js");
+ var _icon2 = _interopRequireDefault(_icon);
+ var _icons = __webpack_require__("./dist/icons.json");
+ var _icons2 = _interopRequireDefault(_icons);
+ var _tags = __webpack_require__("./src/tags.json");
+ var _tags2 = _interopRequireDefault(_tags);
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+ exports2.default = Object.keys(_icons2.default).map(function(key) {
+ return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);
+ }).reduce(function(object, icon) {
+ object[icon.name] = icon;
+ return object;
+ }, {});
+ },
+ "./src/index.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ var _icons = __webpack_require__("./src/icons.js");
+ var _icons2 = _interopRequireDefault(_icons);
+ var _toSvg = __webpack_require__("./src/to-svg.js");
+ var _toSvg2 = _interopRequireDefault(_toSvg);
+ var _replace = __webpack_require__("./src/replace.js");
+ var _replace2 = _interopRequireDefault(_replace);
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+ module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };
+ },
+ "./src/replace.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", {
+ value: true
+ });
+ var _extends = Object.assign || function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+ var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js");
+ var _dedupe2 = _interopRequireDefault(_dedupe);
+ var _icons = __webpack_require__("./src/icons.js");
+ var _icons2 = _interopRequireDefault(_icons);
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+ function replace() {
+ var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
+ if (typeof document === "undefined") {
+ throw new Error("`feather.replace()` only works in a browser environment.");
+ }
+ var elementsToReplace = document.querySelectorAll("[data-feather]");
+ Array.from(elementsToReplace).forEach(function(element2) {
+ return replaceElement(element2, attrs);
+ });
+ }
+ function replaceElement(element2) {
+ var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+ var elementAttrs = getAttrs(element2);
+ var name = elementAttrs["data-feather"];
+ delete elementAttrs["data-feather"];
+ var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));
+ var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml");
+ var svgElement = svgDocument.querySelector("svg");
+ element2.parentNode.replaceChild(svgElement, element2);
+ }
+ function getAttrs(element2) {
+ return Array.from(element2.attributes).reduce(function(attrs, attr2) {
+ attrs[attr2.name] = attr2.value;
+ return attrs;
+ }, {});
+ }
+ exports2.default = replace;
+ },
+ "./src/tags.json": function(module3) {
+ module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] };
+ },
+ "./src/to-svg.js": function(module3, exports2, __webpack_require__) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", {
+ value: true
+ });
+ var _icons = __webpack_require__("./src/icons.js");
+ var _icons2 = _interopRequireDefault(_icons);
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+ function toSvg(name) {
+ var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
+ console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.");
+ if (!name) {
+ throw new Error("The required `key` (icon name) parameter is missing.");
+ }
+ if (!_icons2.default[name]) {
+ throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com");
+ }
+ return _icons2.default[name].toSvg(attrs);
+ }
+ exports2.default = toSvg;
+ },
+ 0: function(module3, exports2, __webpack_require__) {
+ __webpack_require__("./node_modules/core-js/es/array/from.js");
+ module3.exports = __webpack_require__("./src/index.js");
+ }
+ });
+ });
+ }
+});
+
+// node_modules/lodash.groupby/index.js
+var require_lodash = __commonJS({
+ "node_modules/lodash.groupby/index.js"(exports, module2) {
+ var LARGE_ARRAY_SIZE = 200;
+ var FUNC_ERROR_TEXT = "Expected a function";
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var UNORDERED_COMPARE_FLAG = 1;
+ var PARTIAL_COMPARE_FLAG = 2;
+ var INFINITY = 1 / 0;
+ var MAX_SAFE_INTEGER = 9007199254740991;
+ var argsTag = "[object Arguments]";
+ var arrayTag = "[object Array]";
+ var boolTag = "[object Boolean]";
+ var dateTag = "[object Date]";
+ var errorTag = "[object Error]";
+ var funcTag = "[object Function]";
+ var genTag = "[object GeneratorFunction]";
+ var mapTag = "[object Map]";
+ var numberTag = "[object Number]";
+ var objectTag = "[object Object]";
+ var promiseTag = "[object Promise]";
+ var regexpTag = "[object RegExp]";
+ var setTag = "[object Set]";
+ var stringTag = "[object String]";
+ var symbolTag = "[object Symbol]";
+ var weakMapTag = "[object WeakMap]";
+ var arrayBufferTag = "[object ArrayBuffer]";
+ var dataViewTag = "[object DataView]";
+ var float32Tag = "[object Float32Array]";
+ var float64Tag = "[object Float64Array]";
+ var int8Tag = "[object Int8Array]";
+ var int16Tag = "[object Int16Array]";
+ var int32Tag = "[object Int32Array]";
+ var uint8Tag = "[object Uint8Array]";
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
+ var uint16Tag = "[object Uint16Array]";
+ var uint32Tag = "[object Uint32Array]";
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/;
+ var reIsPlainProp = /^\w*$/;
+ var reLeadingDot = /^\./;
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ var reEscapeChar = /\\(\\)?/g;
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+ var root = freeGlobal || freeSelf || Function("return this")();
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ var freeProcess = moduleExports && freeGlobal.process;
+ var nodeUtil = function() {
+ try {
+ return freeProcess && freeProcess.binding("util");
+ } catch (e) {
+ }
+ }();
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ function arrayAggregator(array, setter, iteratee, accumulator) {
+ var index = -1, length = array ? array.length : 0;
+ while (++index < length) {
+ var value = array[index];
+ setter(accumulator, value, iteratee(value), array);
+ }
+ return accumulator;
+ }
+ function arraySome(array, predicate) {
+ var index = -1, length = array ? array.length : 0;
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function baseProperty(key) {
+ return function(object) {
+ return object == null ? void 0 : object[key];
+ };
+ }
+ function baseTimes(n, iteratee) {
+ var index = -1, result = Array(n);
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ function baseUnary(func2) {
+ return function(value) {
+ return func2(value);
+ };
+ }
+ function getValue(object, key) {
+ return object == null ? void 0 : object[key];
+ }
+ function isHostObject(value) {
+ var result = false;
+ if (value != null && typeof value.toString != "function") {
+ try {
+ result = !!(value + "");
+ } catch (e) {
+ }
+ }
+ return result;
+ }
+ function mapToArray(map) {
+ var index = -1, result = Array(map.size);
+ map.forEach(function(value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ function overArg(func2, transform) {
+ return function(arg) {
+ return func2(transform(arg));
+ };
+ }
+ function setToArray(set) {
+ var index = -1, result = Array(set.size);
+ set.forEach(function(value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ var arrayProto = Array.prototype;
+ var funcProto = Function.prototype;
+ var objectProto = Object.prototype;
+ var coreJsData = root["__core-js_shared__"];
+ var maskSrcKey = function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+ return uid ? "Symbol(src)_1." + uid : "";
+ }();
+ var funcToString = funcProto.toString;
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ var objectToString = objectProto.toString;
+ var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
+ var Symbol2 = root.Symbol;
+ var Uint8Array2 = root.Uint8Array;
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+ var splice = arrayProto.splice;
+ var nativeKeys = overArg(Object.keys, Object);
+ var DataView = getNative(root, "DataView");
+ var Map2 = getNative(root, "Map");
+ var Promise2 = getNative(root, "Promise");
+ var Set2 = getNative(root, "Set");
+ var WeakMap = getNative(root, "WeakMap");
+ var nativeCreate = getNative(Object, "create");
+ var dataViewCtorString = toSource(DataView);
+ var mapCtorString = toSource(Map2);
+ var promiseCtorString = toSource(Promise2);
+ var setCtorString = toSource(Set2);
+ var weakMapCtorString = toSource(WeakMap);
+ var symbolProto = Symbol2 ? Symbol2.prototype : void 0;
+ var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
+ var symbolToString = symbolProto ? symbolProto.toString : void 0;
+ function Hash(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ }
+ function hashDelete(key) {
+ return this.has(key) && delete this.__data__[key];
+ }
+ function hashGet(key) {
+ var data = this.__data__;
+ if (nativeCreate) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? void 0 : result;
+ }
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
+ }
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
+ }
+ function hashSet(key, value) {
+ var data = this.__data__;
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
+ return this;
+ }
+ Hash.prototype.clear = hashClear;
+ Hash.prototype["delete"] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ function ListCache(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function listCacheClear() {
+ this.__data__ = [];
+ }
+ function listCacheDelete(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ return false;
+ }
+ var lastIndex = data.length - 1;
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+ return true;
+ }
+ function listCacheGet(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ return index < 0 ? void 0 : data[index][1];
+ }
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ function listCacheSet(key, value) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+ return this;
+ }
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype["delete"] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ function MapCache(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function mapCacheClear() {
+ this.__data__ = {
+ "hash": new Hash(),
+ "map": new (Map2 || ListCache)(),
+ "string": new Hash()
+ };
+ }
+ function mapCacheDelete(key) {
+ return getMapData(this, key)["delete"](key);
+ }
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ function mapCacheSet(key, value) {
+ getMapData(this, key).set(key, value);
+ return this;
+ }
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype["delete"] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ function SetCache(values2) {
+ var index = -1, length = values2 ? values2.length : 0;
+ this.__data__ = new MapCache();
+ while (++index < length) {
+ this.add(values2[index]);
+ }
+ }
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED);
+ return this;
+ }
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ }
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+ SetCache.prototype.has = setCacheHas;
+ function Stack(entries) {
+ this.__data__ = new ListCache(entries);
+ }
+ function stackClear() {
+ this.__data__ = new ListCache();
+ }
+ function stackDelete(key) {
+ return this.__data__["delete"](key);
+ }
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ function stackSet(key, value) {
+ var cache = this.__data__;
+ if (cache instanceof ListCache) {
+ var pairs = cache.__data__;
+ if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ return this;
+ }
+ cache = this.__data__ = new MapCache(pairs);
+ }
+ cache.set(key, value);
+ return this;
+ }
+ Stack.prototype.clear = stackClear;
+ Stack.prototype["delete"] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ function arrayLikeKeys(value, inherited) {
+ var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
+ var length = result.length, skipIndexes = !!length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function assocIndexOf(array, key) {
+ var length = array.length;
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+ return -1;
+ }
+ function baseAggregator(collection, setter, iteratee, accumulator) {
+ baseEach(collection, function(value, key, collection2) {
+ setter(accumulator, value, iteratee(value), collection2);
+ });
+ return accumulator;
+ }
+ var baseEach = createBaseEach(baseForOwn);
+ var baseFor = createBaseFor();
+ function baseForOwn(object, iteratee) {
+ return object && baseFor(object, iteratee, keys);
+ }
+ function baseGet(object, path) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var index = 0, length = path.length;
+ while (object != null && index < length) {
+ object = object[toKey(path[index++])];
+ }
+ return index && index == length ? object : void 0;
+ }
+ function baseGetTag(value) {
+ return objectToString.call(value);
+ }
+ function baseHasIn(object, key) {
+ return object != null && key in Object(object);
+ }
+ function baseIsEqual(value, other, customizer, bitmask, stack) {
+ if (value === other) {
+ return true;
+ }
+ if (value == null || other == null || !isObject(value) && !isObjectLike(other)) {
+ return value !== value && other !== other;
+ }
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
+ }
+ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
+ var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag;
+ if (!objIsArr) {
+ objTag = getTag(object);
+ objTag = objTag == argsTag ? objectTag : objTag;
+ }
+ if (!othIsArr) {
+ othTag = getTag(other);
+ othTag = othTag == argsTag ? objectTag : othTag;
+ }
+ var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag;
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack());
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
+ }
+ if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack());
+ return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
+ }
+ }
+ if (!isSameTag) {
+ return false;
+ }
+ stack || (stack = new Stack());
+ return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
+ }
+ function baseIsMatch(object, source, matchData, customizer) {
+ var index = matchData.length, length = index, noCustomizer = !customizer;
+ if (object == null) {
+ return !length;
+ }
+ object = Object(object);
+ while (index--) {
+ var data = matchData[index];
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
+ return false;
+ }
+ }
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0], objValue = object[key], srcValue = data[1];
+ if (noCustomizer && data[2]) {
+ if (objValue === void 0 && !(key in object)) {
+ return false;
+ }
+ } else {
+ var stack = new Stack();
+ if (customizer) {
+ var result = customizer(objValue, srcValue, key, object, source, stack);
+ }
+ if (!(result === void 0 ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
+ }
+ function baseIteratee(value) {
+ if (typeof value == "function") {
+ return value;
+ }
+ if (value == null) {
+ return identity;
+ }
+ if (typeof value == "object") {
+ return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
+ }
+ return property(value);
+ }
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != "constructor") {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+ if (matchData.length == 1 && matchData[0][2]) {
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+ }
+ return function(object) {
+ return object === source || baseIsMatch(object, source, matchData);
+ };
+ }
+ function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(toKey(path), srcValue);
+ }
+ return function(object) {
+ var objValue = get(object, path);
+ return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, void 0, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
+ };
+ }
+ function basePropertyDeep(path) {
+ return function(object) {
+ return baseGet(object, path);
+ };
+ }
+ function baseToString(value) {
+ if (typeof value == "string") {
+ return value;
+ }
+ if (isSymbol(value)) {
+ return symbolToString ? symbolToString.call(value) : "";
+ }
+ var result = value + "";
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
+ }
+ function castPath(value) {
+ return isArray(value) ? value : stringToPath(value);
+ }
+ function createAggregator(setter, initializer) {
+ return function(collection, iteratee) {
+ var func2 = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
+ return func2(collection, setter, baseIteratee(iteratee, 2), accumulator);
+ };
+ }
+ function createBaseEach(eachFunc, fromRight) {
+ return function(collection, iteratee) {
+ if (collection == null) {
+ return collection;
+ }
+ if (!isArrayLike(collection)) {
+ return eachFunc(collection, iteratee);
+ }
+ var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);
+ while (fromRight ? index-- : ++index < length) {
+ if (iteratee(iterable[index], index, iterable) === false) {
+ break;
+ }
+ }
+ return collection;
+ };
+ }
+ function createBaseFor(fromRight) {
+ return function(object, iteratee, keysFunc) {
+ var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
+ while (length--) {
+ var key = props[fromRight ? length : ++index];
+ if (iteratee(iterable[key], key, iterable) === false) {
+ break;
+ }
+ }
+ return object;
+ };
+ }
+ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length;
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ }
+ var stacked = stack.get(array);
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+ var index = -1, result = true, seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : void 0;
+ stack.set(array, other);
+ stack.set(other, array);
+ while (++index < arrLength) {
+ var arrValue = array[index], othValue = other[index];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
+ }
+ if (compared !== void 0) {
+ if (compared) {
+ continue;
+ }
+ result = false;
+ break;
+ }
+ if (seen) {
+ if (!arraySome(other, function(othValue2, othIndex) {
+ if (!seen.has(othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, customizer, bitmask, stack))) {
+ return seen.add(othIndex);
+ }
+ })) {
+ result = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ result = false;
+ break;
+ }
+ }
+ stack["delete"](array);
+ stack["delete"](other);
+ return result;
+ }
+ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
+ switch (tag) {
+ case dataViewTag:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+ object = object.buffer;
+ other = other.buffer;
+ case arrayBufferTag:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
+ return false;
+ }
+ return true;
+ case boolTag:
+ case dateTag:
+ case numberTag:
+ return eq(+object, +other);
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+ case regexpTag:
+ case stringTag:
+ return object == other + "";
+ case mapTag:
+ var convert = mapToArray;
+ case setTag:
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
+ convert || (convert = setToArray);
+ if (object.size != other.size && !isPartial) {
+ return false;
+ }
+ var stacked = stack.get(object);
+ if (stacked) {
+ return stacked == other;
+ }
+ bitmask |= UNORDERED_COMPARE_FLAG;
+ stack.set(object, other);
+ var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
+ stack["delete"](object);
+ return result;
+ case symbolTag:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+ }
+ return false;
+ }
+ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length;
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+ var index = objLength;
+ while (index--) {
+ var key = objProps[index];
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ }
+ var stacked = stack.get(object);
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+ var result = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key], othValue = other[key];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ }
+ if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
+ result = false;
+ break;
+ }
+ skipCtor || (skipCtor = key == "constructor");
+ }
+ if (result && !skipCtor) {
+ var objCtor = object.constructor, othCtor = other.constructor;
+ if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
+ result = false;
+ }
+ }
+ stack["delete"](object);
+ stack["delete"](other);
+ return result;
+ }
+ function getMapData(map, key) {
+ var data = map.__data__;
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ }
+ function getMatchData(object) {
+ var result = keys(object), length = result.length;
+ while (length--) {
+ var key = result[length], value = object[key];
+ result[length] = [key, value, isStrictComparable(value)];
+ }
+ return result;
+ }
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : void 0;
+ }
+ var getTag = baseGetTag;
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
+ getTag = function(value) {
+ var result = objectToString.call(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : void 0;
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag;
+ case mapCtorString:
+ return mapTag;
+ case promiseCtorString:
+ return promiseTag;
+ case setCtorString:
+ return setTag;
+ case weakMapCtorString:
+ return weakMapTag;
+ }
+ }
+ return result;
+ };
+ }
+ function hasPath(object, path, hasFunc) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var result, index = -1, length = path.length;
+ while (++index < length) {
+ var key = toKey(path[index]);
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
+ }
+ object = object[key];
+ }
+ if (result) {
+ return result;
+ }
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
+ }
+ function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ function isKey(value, object) {
+ if (isArray(value)) {
+ return false;
+ }
+ var type = typeof value;
+ if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
+ return true;
+ }
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
+ }
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+ }
+ function isMasked(func2) {
+ return !!maskSrcKey && maskSrcKey in func2;
+ }
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+ function matchesStrictComparable(key, srcValue) {
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
+ };
+ }
+ var stringToPath = memoize(function(string) {
+ string = toString(string);
+ var result = [];
+ if (reLeadingDot.test(string)) {
+ result.push("");
+ }
+ string.replace(rePropName, function(match, number, quote, string2) {
+ result.push(quote ? string2.replace(reEscapeChar, "$1") : number || match);
+ });
+ return result;
+ });
+ function toKey(value) {
+ if (typeof value == "string" || isSymbol(value)) {
+ return value;
+ }
+ var result = value + "";
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
+ }
+ function toSource(func2) {
+ if (func2 != null) {
+ try {
+ return funcToString.call(func2);
+ } catch (e) {
+ }
+ try {
+ return func2 + "";
+ } catch (e) {
+ }
+ }
+ return "";
+ }
+ var groupBy5 = createAggregator(function(result, value, key) {
+ if (hasOwnProperty.call(result, key)) {
+ result[key].push(value);
+ } else {
+ result[key] = [value];
+ }
+ });
+ function memoize(func2, resolver) {
+ if (typeof func2 != "function" || resolver && typeof resolver != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ var memoized = function() {
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
+ if (cache.has(key)) {
+ return cache.get(key);
+ }
+ var result = func2.apply(this, args);
+ memoized.cache = cache.set(key, result);
+ return result;
+ };
+ memoized.cache = new (memoize.Cache || MapCache)();
+ return memoized;
+ }
+ memoize.Cache = MapCache;
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ function isArguments(value) {
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
+ }
+ var isArray = Array.isArray;
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ function isFunction(value) {
+ var tag = isObject(value) ? objectToString.call(value) : "";
+ return tag == funcTag || tag == genTag;
+ }
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == "object" || type == "function");
+ }
+ function isObjectLike(value) {
+ return !!value && typeof value == "object";
+ }
+ function isSymbol(value) {
+ return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
+ }
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ function toString(value) {
+ return value == null ? "" : baseToString(value);
+ }
+ function get(object, path, defaultValue) {
+ var result = object == null ? void 0 : baseGet(object, path);
+ return result === void 0 ? defaultValue : result;
+ }
+ function hasIn(object, path) {
+ return object != null && hasPath(object, path, baseHasIn);
+ }
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ function identity(value) {
+ return value;
+ }
+ function property(path) {
+ return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+ }
+ module2.exports = groupBy5;
+ }
+});
+
+// node_modules/lodash.mergewith/index.js
+var require_lodash2 = __commonJS({
+ "node_modules/lodash.mergewith/index.js"(exports, module2) {
+ var LARGE_ARRAY_SIZE = 200;
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var HOT_COUNT = 800;
+ var HOT_SPAN = 16;
+ var MAX_SAFE_INTEGER = 9007199254740991;
+ var argsTag = "[object Arguments]";
+ var arrayTag = "[object Array]";
+ var asyncTag = "[object AsyncFunction]";
+ var boolTag = "[object Boolean]";
+ var dateTag = "[object Date]";
+ var errorTag = "[object Error]";
+ var funcTag = "[object Function]";
+ var genTag = "[object GeneratorFunction]";
+ var mapTag = "[object Map]";
+ var numberTag = "[object Number]";
+ var nullTag = "[object Null]";
+ var objectTag = "[object Object]";
+ var proxyTag = "[object Proxy]";
+ var regexpTag = "[object RegExp]";
+ var setTag = "[object Set]";
+ var stringTag = "[object String]";
+ var undefinedTag = "[object Undefined]";
+ var weakMapTag = "[object WeakMap]";
+ var arrayBufferTag = "[object ArrayBuffer]";
+ var dataViewTag = "[object DataView]";
+ var float32Tag = "[object Float32Array]";
+ var float64Tag = "[object Float64Array]";
+ var int8Tag = "[object Int8Array]";
+ var int16Tag = "[object Int16Array]";
+ var int32Tag = "[object Int32Array]";
+ var uint8Tag = "[object Uint8Array]";
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
+ var uint16Tag = "[object Uint16Array]";
+ var uint32Tag = "[object Uint32Array]";
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+ var root = freeGlobal || freeSelf || Function("return this")();
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ var freeProcess = moduleExports && freeGlobal.process;
+ var nodeUtil = function() {
+ try {
+ var types = freeModule && freeModule.require && freeModule.require("util").types;
+ if (types) {
+ return types;
+ }
+ return freeProcess && freeProcess.binding && freeProcess.binding("util");
+ } catch (e) {
+ }
+ }();
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ function apply(func2, thisArg, args) {
+ switch (args.length) {
+ case 0:
+ return func2.call(thisArg);
+ case 1:
+ return func2.call(thisArg, args[0]);
+ case 2:
+ return func2.call(thisArg, args[0], args[1]);
+ case 3:
+ return func2.call(thisArg, args[0], args[1], args[2]);
+ }
+ return func2.apply(thisArg, args);
+ }
+ function baseTimes(n, iteratee) {
+ var index = -1, result = Array(n);
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ function baseUnary(func2) {
+ return function(value) {
+ return func2(value);
+ };
+ }
+ function getValue(object, key) {
+ return object == null ? void 0 : object[key];
+ }
+ function overArg(func2, transform) {
+ return function(arg) {
+ return func2(transform(arg));
+ };
+ }
+ var arrayProto = Array.prototype;
+ var funcProto = Function.prototype;
+ var objectProto = Object.prototype;
+ var coreJsData = root["__core-js_shared__"];
+ var funcToString = funcProto.toString;
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ var maskSrcKey = function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+ return uid ? "Symbol(src)_1." + uid : "";
+ }();
+ var nativeObjectToString = objectProto.toString;
+ var objectCtorString = funcToString.call(Object);
+ var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
+ var Buffer2 = moduleExports ? root.Buffer : void 0;
+ var Symbol2 = root.Symbol;
+ var Uint8Array2 = root.Uint8Array;
+ var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
+ var getPrototype = overArg(Object.getPrototypeOf, Object);
+ var objectCreate = Object.create;
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+ var splice = arrayProto.splice;
+ var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
+ var defineProperty = function() {
+ try {
+ var func2 = getNative(Object, "defineProperty");
+ func2({}, "", {});
+ return func2;
+ } catch (e) {
+ }
+ }();
+ var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
+ var nativeMax = Math.max;
+ var nativeNow = Date.now;
+ var Map2 = getNative(root, "Map");
+ var nativeCreate = getNative(Object, "create");
+ var baseCreate = function() {
+ function object() {
+ }
+ return function(proto) {
+ if (!isObject(proto)) {
+ return {};
+ }
+ if (objectCreate) {
+ return objectCreate(proto);
+ }
+ object.prototype = proto;
+ var result = new object();
+ object.prototype = void 0;
+ return result;
+ };
+ }();
+ function Hash(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ this.size = 0;
+ }
+ function hashDelete(key) {
+ var result = this.has(key) && delete this.__data__[key];
+ this.size -= result ? 1 : 0;
+ return result;
+ }
+ function hashGet(key) {
+ var data = this.__data__;
+ if (nativeCreate) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? void 0 : result;
+ }
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
+ }
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
+ }
+ function hashSet(key, value) {
+ var data = this.__data__;
+ this.size += this.has(key) ? 0 : 1;
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
+ return this;
+ }
+ Hash.prototype.clear = hashClear;
+ Hash.prototype["delete"] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ function ListCache(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function listCacheClear() {
+ this.__data__ = [];
+ this.size = 0;
+ }
+ function listCacheDelete(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ return false;
+ }
+ var lastIndex = data.length - 1;
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+ --this.size;
+ return true;
+ }
+ function listCacheGet(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ return index < 0 ? void 0 : data[index][1];
+ }
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ function listCacheSet(key, value) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ ++this.size;
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+ return this;
+ }
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype["delete"] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ function MapCache(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function mapCacheClear() {
+ this.size = 0;
+ this.__data__ = {
+ "hash": new Hash(),
+ "map": new (Map2 || ListCache)(),
+ "string": new Hash()
+ };
+ }
+ function mapCacheDelete(key) {
+ var result = getMapData(this, key)["delete"](key);
+ this.size -= result ? 1 : 0;
+ return result;
+ }
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ function mapCacheSet(key, value) {
+ var data = getMapData(this, key), size = data.size;
+ data.set(key, value);
+ this.size += data.size == size ? 0 : 1;
+ return this;
+ }
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype["delete"] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ function Stack(entries) {
+ var data = this.__data__ = new ListCache(entries);
+ this.size = data.size;
+ }
+ function stackClear() {
+ this.__data__ = new ListCache();
+ this.size = 0;
+ }
+ function stackDelete(key) {
+ var data = this.__data__, result = data["delete"](key);
+ this.size = data.size;
+ return result;
+ }
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ function stackSet(key, value) {
+ var data = this.__data__;
+ if (data instanceof ListCache) {
+ var pairs = data.__data__;
+ if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ this.size = ++data.size;
+ return this;
+ }
+ data = this.__data__ = new MapCache(pairs);
+ }
+ data.set(key, value);
+ this.size = data.size;
+ return this;
+ }
+ Stack.prototype.clear = stackClear;
+ Stack.prototype["delete"] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ function arrayLikeKeys(value, inherited) {
+ var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function assignMergeValue(object, key, value) {
+ if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {
+ baseAssignValue(object, key, value);
+ }
+ }
+ function assignValue(object, key, value) {
+ var objValue = object[key];
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
+ baseAssignValue(object, key, value);
+ }
+ }
+ function assocIndexOf(array, key) {
+ var length = array.length;
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+ return -1;
+ }
+ function baseAssignValue(object, key, value) {
+ if (key == "__proto__" && defineProperty) {
+ defineProperty(object, key, {
+ "configurable": true,
+ "enumerable": true,
+ "value": value,
+ "writable": true
+ });
+ } else {
+ object[key] = value;
+ }
+ }
+ var baseFor = createBaseFor();
+ function baseGetTag(value) {
+ if (value == null) {
+ return value === void 0 ? undefinedTag : nullTag;
+ }
+ return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
+ }
+ function baseIsArguments(value) {
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
+ }
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
+ }
+ function baseKeysIn(object) {
+ if (!isObject(object)) {
+ return nativeKeysIn(object);
+ }
+ var isProto = isPrototype(object), result = [];
+ for (var key in object) {
+ if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function baseMerge(object, source, srcIndex, customizer, stack) {
+ if (object === source) {
+ return;
+ }
+ baseFor(source, function(srcValue, key) {
+ stack || (stack = new Stack());
+ if (isObject(srcValue)) {
+ baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
+ } else {
+ var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0;
+ if (newValue === void 0) {
+ newValue = srcValue;
+ }
+ assignMergeValue(object, key, newValue);
+ }
+ }, keysIn);
+ }
+ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
+ var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
+ if (stacked) {
+ assignMergeValue(object, key, stacked);
+ return;
+ }
+ var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0;
+ var isCommon = newValue === void 0;
+ if (isCommon) {
+ var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+ newValue = srcValue;
+ if (isArr || isBuff || isTyped) {
+ if (isArray(objValue)) {
+ newValue = objValue;
+ } else if (isArrayLikeObject(objValue)) {
+ newValue = copyArray(objValue);
+ } else if (isBuff) {
+ isCommon = false;
+ newValue = cloneBuffer(srcValue, true);
+ } else if (isTyped) {
+ isCommon = false;
+ newValue = cloneTypedArray(srcValue, true);
+ } else {
+ newValue = [];
+ }
+ } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+ newValue = objValue;
+ if (isArguments(objValue)) {
+ newValue = toPlainObject(objValue);
+ } else if (!isObject(objValue) || isFunction(objValue)) {
+ newValue = initCloneObject(srcValue);
+ }
+ } else {
+ isCommon = false;
+ }
+ }
+ if (isCommon) {
+ stack.set(srcValue, newValue);
+ mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
+ stack["delete"](srcValue);
+ }
+ assignMergeValue(object, key, newValue);
+ }
+ function baseRest(func2, start2) {
+ return setToString(overRest(func2, start2, identity), func2 + "");
+ }
+ var baseSetToString = !defineProperty ? identity : function(func2, string) {
+ return defineProperty(func2, "toString", {
+ "configurable": true,
+ "enumerable": false,
+ "value": constant(string),
+ "writable": true
+ });
+ };
+ function cloneBuffer(buffer, isDeep) {
+ if (isDeep) {
+ return buffer.slice();
+ }
+ var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
+ buffer.copy(result);
+ return result;
+ }
+ function cloneArrayBuffer(arrayBuffer) {
+ var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
+ new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
+ return result;
+ }
+ function cloneTypedArray(typedArray, isDeep) {
+ var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
+ return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
+ }
+ function copyArray(source, array) {
+ var index = -1, length = source.length;
+ array || (array = Array(length));
+ while (++index < length) {
+ array[index] = source[index];
+ }
+ return array;
+ }
+ function copyObject(source, props, object, customizer) {
+ var isNew = !object;
+ object || (object = {});
+ var index = -1, length = props.length;
+ while (++index < length) {
+ var key = props[index];
+ var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
+ if (newValue === void 0) {
+ newValue = source[key];
+ }
+ if (isNew) {
+ baseAssignValue(object, key, newValue);
+ } else {
+ assignValue(object, key, newValue);
+ }
+ }
+ return object;
+ }
+ function createAssigner(assigner) {
+ return baseRest(function(object, sources) {
+ var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
+ customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+ customizer = length < 3 ? void 0 : customizer;
+ length = 1;
+ }
+ object = Object(object);
+ while (++index < length) {
+ var source = sources[index];
+ if (source) {
+ assigner(object, source, index, customizer);
+ }
+ }
+ return object;
+ });
+ }
+ function createBaseFor(fromRight) {
+ return function(object, iteratee, keysFunc) {
+ var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
+ while (length--) {
+ var key = props[fromRight ? length : ++index];
+ if (iteratee(iterable[key], key, iterable) === false) {
+ break;
+ }
+ }
+ return object;
+ };
+ }
+ function getMapData(map, key) {
+ var data = map.__data__;
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ }
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : void 0;
+ }
+ function getRawTag(value) {
+ var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
+ try {
+ value[symToStringTag] = void 0;
+ var unmasked = true;
+ } catch (e) {
+ }
+ var result = nativeObjectToString.call(value);
+ if (unmasked) {
+ if (isOwn) {
+ value[symToStringTag] = tag;
+ } else {
+ delete value[symToStringTag];
+ }
+ }
+ return result;
+ }
+ function initCloneObject(object) {
+ return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
+ }
+ function isIndex(value, length) {
+ var type = typeof value;
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ function isIterateeCall(value, index, object) {
+ if (!isObject(object)) {
+ return false;
+ }
+ var type = typeof index;
+ if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
+ return eq(object[index], value);
+ }
+ return false;
+ }
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+ }
+ function isMasked(func2) {
+ return !!maskSrcKey && maskSrcKey in func2;
+ }
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ function nativeKeysIn(object) {
+ var result = [];
+ if (object != null) {
+ for (var key in Object(object)) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function objectToString(value) {
+ return nativeObjectToString.call(value);
+ }
+ function overRest(func2, start2, transform) {
+ start2 = nativeMax(start2 === void 0 ? func2.length - 1 : start2, 0);
+ return function() {
+ var args = arguments, index = -1, length = nativeMax(args.length - start2, 0), array = Array(length);
+ while (++index < length) {
+ array[index] = args[start2 + index];
+ }
+ index = -1;
+ var otherArgs = Array(start2 + 1);
+ while (++index < start2) {
+ otherArgs[index] = args[index];
+ }
+ otherArgs[start2] = transform(array);
+ return apply(func2, this, otherArgs);
+ };
+ }
+ function safeGet(object, key) {
+ if (key === "constructor" && typeof object[key] === "function") {
+ return;
+ }
+ if (key == "__proto__") {
+ return;
+ }
+ return object[key];
+ }
+ var setToString = shortOut(baseSetToString);
+ function shortOut(func2) {
+ var count = 0, lastCalled = 0;
+ return function() {
+ var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
+ lastCalled = stamp;
+ if (remaining > 0) {
+ if (++count >= HOT_COUNT) {
+ return arguments[0];
+ }
+ } else {
+ count = 0;
+ }
+ return func2.apply(void 0, arguments);
+ };
+ }
+ function toSource(func2) {
+ if (func2 != null) {
+ try {
+ return funcToString.call(func2);
+ } catch (e) {
+ }
+ try {
+ return func2 + "";
+ } catch (e) {
+ }
+ }
+ return "";
+ }
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ var isArguments = baseIsArguments(function() {
+ return arguments;
+ }()) ? baseIsArguments : function(value) {
+ return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
+ };
+ var isArray = Array.isArray;
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ var isBuffer = nativeIsBuffer || stubFalse;
+ function isFunction(value) {
+ if (!isObject(value)) {
+ return false;
+ }
+ var tag = baseGetTag(value);
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
+ }
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ function isObject(value) {
+ var type = typeof value;
+ return value != null && (type == "object" || type == "function");
+ }
+ function isObjectLike(value) {
+ return value != null && typeof value == "object";
+ }
+ function isPlainObject(value) {
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
+ return false;
+ }
+ var proto = getPrototype(value);
+ if (proto === null) {
+ return true;
+ }
+ var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
+ }
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ function toPlainObject(value) {
+ return copyObject(value, keysIn(value));
+ }
+ function keysIn(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
+ }
+ var mergeWith2 = createAssigner(function(object, source, srcIndex, customizer) {
+ baseMerge(object, source, srcIndex, customizer);
+ });
+ function constant(value) {
+ return function() {
+ return value;
+ };
+ }
+ function identity(value) {
+ return value;
+ }
+ function stubFalse() {
+ return false;
+ }
+ module2.exports = mergeWith2;
+ }
+});
+
+// node_modules/lodash.keyby/index.js
+var require_lodash3 = __commonJS({
+ "node_modules/lodash.keyby/index.js"(exports, module2) {
+ var LARGE_ARRAY_SIZE = 200;
+ var FUNC_ERROR_TEXT = "Expected a function";
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var UNORDERED_COMPARE_FLAG = 1;
+ var PARTIAL_COMPARE_FLAG = 2;
+ var INFINITY = 1 / 0;
+ var MAX_SAFE_INTEGER = 9007199254740991;
+ var argsTag = "[object Arguments]";
+ var arrayTag = "[object Array]";
+ var boolTag = "[object Boolean]";
+ var dateTag = "[object Date]";
+ var errorTag = "[object Error]";
+ var funcTag = "[object Function]";
+ var genTag = "[object GeneratorFunction]";
+ var mapTag = "[object Map]";
+ var numberTag = "[object Number]";
+ var objectTag = "[object Object]";
+ var promiseTag = "[object Promise]";
+ var regexpTag = "[object RegExp]";
+ var setTag = "[object Set]";
+ var stringTag = "[object String]";
+ var symbolTag = "[object Symbol]";
+ var weakMapTag = "[object WeakMap]";
+ var arrayBufferTag = "[object ArrayBuffer]";
+ var dataViewTag = "[object DataView]";
+ var float32Tag = "[object Float32Array]";
+ var float64Tag = "[object Float64Array]";
+ var int8Tag = "[object Int8Array]";
+ var int16Tag = "[object Int16Array]";
+ var int32Tag = "[object Int32Array]";
+ var uint8Tag = "[object Uint8Array]";
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
+ var uint16Tag = "[object Uint16Array]";
+ var uint32Tag = "[object Uint32Array]";
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/;
+ var reIsPlainProp = /^\w*$/;
+ var reLeadingDot = /^\./;
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ var reEscapeChar = /\\(\\)?/g;
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+ var root = freeGlobal || freeSelf || Function("return this")();
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ var freeProcess = moduleExports && freeGlobal.process;
+ var nodeUtil = function() {
+ try {
+ return freeProcess && freeProcess.binding("util");
+ } catch (e) {
+ }
+ }();
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ function arrayAggregator(array, setter, iteratee, accumulator) {
+ var index = -1, length = array ? array.length : 0;
+ while (++index < length) {
+ var value = array[index];
+ setter(accumulator, value, iteratee(value), array);
+ }
+ return accumulator;
+ }
+ function arraySome(array, predicate) {
+ var index = -1, length = array ? array.length : 0;
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function baseProperty(key) {
+ return function(object) {
+ return object == null ? void 0 : object[key];
+ };
+ }
+ function baseTimes(n, iteratee) {
+ var index = -1, result = Array(n);
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ function baseUnary(func2) {
+ return function(value) {
+ return func2(value);
+ };
+ }
+ function getValue(object, key) {
+ return object == null ? void 0 : object[key];
+ }
+ function isHostObject(value) {
+ var result = false;
+ if (value != null && typeof value.toString != "function") {
+ try {
+ result = !!(value + "");
+ } catch (e) {
+ }
+ }
+ return result;
+ }
+ function mapToArray(map) {
+ var index = -1, result = Array(map.size);
+ map.forEach(function(value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ function overArg(func2, transform) {
+ return function(arg) {
+ return func2(transform(arg));
+ };
+ }
+ function setToArray(set) {
+ var index = -1, result = Array(set.size);
+ set.forEach(function(value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ var arrayProto = Array.prototype;
+ var funcProto = Function.prototype;
+ var objectProto = Object.prototype;
+ var coreJsData = root["__core-js_shared__"];
+ var maskSrcKey = function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+ return uid ? "Symbol(src)_1." + uid : "";
+ }();
+ var funcToString = funcProto.toString;
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ var objectToString = objectProto.toString;
+ var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
+ var Symbol2 = root.Symbol;
+ var Uint8Array2 = root.Uint8Array;
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+ var splice = arrayProto.splice;
+ var nativeKeys = overArg(Object.keys, Object);
+ var DataView = getNative(root, "DataView");
+ var Map2 = getNative(root, "Map");
+ var Promise2 = getNative(root, "Promise");
+ var Set2 = getNative(root, "Set");
+ var WeakMap = getNative(root, "WeakMap");
+ var nativeCreate = getNative(Object, "create");
+ var dataViewCtorString = toSource(DataView);
+ var mapCtorString = toSource(Map2);
+ var promiseCtorString = toSource(Promise2);
+ var setCtorString = toSource(Set2);
+ var weakMapCtorString = toSource(WeakMap);
+ var symbolProto = Symbol2 ? Symbol2.prototype : void 0;
+ var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
+ var symbolToString = symbolProto ? symbolProto.toString : void 0;
+ function Hash(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ }
+ function hashDelete(key) {
+ return this.has(key) && delete this.__data__[key];
+ }
+ function hashGet(key) {
+ var data = this.__data__;
+ if (nativeCreate) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? void 0 : result;
+ }
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
+ }
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
+ }
+ function hashSet(key, value) {
+ var data = this.__data__;
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
+ return this;
+ }
+ Hash.prototype.clear = hashClear;
+ Hash.prototype["delete"] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ function ListCache(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function listCacheClear() {
+ this.__data__ = [];
+ }
+ function listCacheDelete(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ return false;
+ }
+ var lastIndex = data.length - 1;
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+ return true;
+ }
+ function listCacheGet(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ return index < 0 ? void 0 : data[index][1];
+ }
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ function listCacheSet(key, value) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+ return this;
+ }
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype["delete"] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ function MapCache(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function mapCacheClear() {
+ this.__data__ = {
+ "hash": new Hash(),
+ "map": new (Map2 || ListCache)(),
+ "string": new Hash()
+ };
+ }
+ function mapCacheDelete(key) {
+ return getMapData(this, key)["delete"](key);
+ }
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ function mapCacheSet(key, value) {
+ getMapData(this, key).set(key, value);
+ return this;
+ }
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype["delete"] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ function SetCache(values2) {
+ var index = -1, length = values2 ? values2.length : 0;
+ this.__data__ = new MapCache();
+ while (++index < length) {
+ this.add(values2[index]);
+ }
+ }
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED);
+ return this;
+ }
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ }
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+ SetCache.prototype.has = setCacheHas;
+ function Stack(entries) {
+ this.__data__ = new ListCache(entries);
+ }
+ function stackClear() {
+ this.__data__ = new ListCache();
+ }
+ function stackDelete(key) {
+ return this.__data__["delete"](key);
+ }
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ function stackSet(key, value) {
+ var cache = this.__data__;
+ if (cache instanceof ListCache) {
+ var pairs = cache.__data__;
+ if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ return this;
+ }
+ cache = this.__data__ = new MapCache(pairs);
+ }
+ cache.set(key, value);
+ return this;
+ }
+ Stack.prototype.clear = stackClear;
+ Stack.prototype["delete"] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ function arrayLikeKeys(value, inherited) {
+ var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
+ var length = result.length, skipIndexes = !!length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function assocIndexOf(array, key) {
+ var length = array.length;
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+ return -1;
+ }
+ function baseAggregator(collection, setter, iteratee, accumulator) {
+ baseEach(collection, function(value, key, collection2) {
+ setter(accumulator, value, iteratee(value), collection2);
+ });
+ return accumulator;
+ }
+ var baseEach = createBaseEach(baseForOwn);
+ var baseFor = createBaseFor();
+ function baseForOwn(object, iteratee) {
+ return object && baseFor(object, iteratee, keys);
+ }
+ function baseGet(object, path) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var index = 0, length = path.length;
+ while (object != null && index < length) {
+ object = object[toKey(path[index++])];
+ }
+ return index && index == length ? object : void 0;
+ }
+ function baseGetTag(value) {
+ return objectToString.call(value);
+ }
+ function baseHasIn(object, key) {
+ return object != null && key in Object(object);
+ }
+ function baseIsEqual(value, other, customizer, bitmask, stack) {
+ if (value === other) {
+ return true;
+ }
+ if (value == null || other == null || !isObject(value) && !isObjectLike(other)) {
+ return value !== value && other !== other;
+ }
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
+ }
+ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
+ var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag;
+ if (!objIsArr) {
+ objTag = getTag(object);
+ objTag = objTag == argsTag ? objectTag : objTag;
+ }
+ if (!othIsArr) {
+ othTag = getTag(other);
+ othTag = othTag == argsTag ? objectTag : othTag;
+ }
+ var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag;
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack());
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
+ }
+ if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack());
+ return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
+ }
+ }
+ if (!isSameTag) {
+ return false;
+ }
+ stack || (stack = new Stack());
+ return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
+ }
+ function baseIsMatch(object, source, matchData, customizer) {
+ var index = matchData.length, length = index, noCustomizer = !customizer;
+ if (object == null) {
+ return !length;
+ }
+ object = Object(object);
+ while (index--) {
+ var data = matchData[index];
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
+ return false;
+ }
+ }
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0], objValue = object[key], srcValue = data[1];
+ if (noCustomizer && data[2]) {
+ if (objValue === void 0 && !(key in object)) {
+ return false;
+ }
+ } else {
+ var stack = new Stack();
+ if (customizer) {
+ var result = customizer(objValue, srcValue, key, object, source, stack);
+ }
+ if (!(result === void 0 ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
+ }
+ function baseIteratee(value) {
+ if (typeof value == "function") {
+ return value;
+ }
+ if (value == null) {
+ return identity;
+ }
+ if (typeof value == "object") {
+ return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
+ }
+ return property(value);
+ }
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != "constructor") {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+ if (matchData.length == 1 && matchData[0][2]) {
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+ }
+ return function(object) {
+ return object === source || baseIsMatch(object, source, matchData);
+ };
+ }
+ function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(toKey(path), srcValue);
+ }
+ return function(object) {
+ var objValue = get(object, path);
+ return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, void 0, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
+ };
+ }
+ function basePropertyDeep(path) {
+ return function(object) {
+ return baseGet(object, path);
+ };
+ }
+ function baseToString(value) {
+ if (typeof value == "string") {
+ return value;
+ }
+ if (isSymbol(value)) {
+ return symbolToString ? symbolToString.call(value) : "";
+ }
+ var result = value + "";
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
+ }
+ function castPath(value) {
+ return isArray(value) ? value : stringToPath(value);
+ }
+ function createAggregator(setter, initializer) {
+ return function(collection, iteratee) {
+ var func2 = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
+ return func2(collection, setter, baseIteratee(iteratee, 2), accumulator);
+ };
+ }
+ function createBaseEach(eachFunc, fromRight) {
+ return function(collection, iteratee) {
+ if (collection == null) {
+ return collection;
+ }
+ if (!isArrayLike(collection)) {
+ return eachFunc(collection, iteratee);
+ }
+ var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);
+ while (fromRight ? index-- : ++index < length) {
+ if (iteratee(iterable[index], index, iterable) === false) {
+ break;
+ }
+ }
+ return collection;
+ };
+ }
+ function createBaseFor(fromRight) {
+ return function(object, iteratee, keysFunc) {
+ var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
+ while (length--) {
+ var key = props[fromRight ? length : ++index];
+ if (iteratee(iterable[key], key, iterable) === false) {
+ break;
+ }
+ }
+ return object;
+ };
+ }
+ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length;
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ }
+ var stacked = stack.get(array);
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+ var index = -1, result = true, seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : void 0;
+ stack.set(array, other);
+ stack.set(other, array);
+ while (++index < arrLength) {
+ var arrValue = array[index], othValue = other[index];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
+ }
+ if (compared !== void 0) {
+ if (compared) {
+ continue;
+ }
+ result = false;
+ break;
+ }
+ if (seen) {
+ if (!arraySome(other, function(othValue2, othIndex) {
+ if (!seen.has(othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, customizer, bitmask, stack))) {
+ return seen.add(othIndex);
+ }
+ })) {
+ result = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ result = false;
+ break;
+ }
+ }
+ stack["delete"](array);
+ stack["delete"](other);
+ return result;
+ }
+ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
+ switch (tag) {
+ case dataViewTag:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+ object = object.buffer;
+ other = other.buffer;
+ case arrayBufferTag:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
+ return false;
+ }
+ return true;
+ case boolTag:
+ case dateTag:
+ case numberTag:
+ return eq(+object, +other);
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+ case regexpTag:
+ case stringTag:
+ return object == other + "";
+ case mapTag:
+ var convert = mapToArray;
+ case setTag:
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
+ convert || (convert = setToArray);
+ if (object.size != other.size && !isPartial) {
+ return false;
+ }
+ var stacked = stack.get(object);
+ if (stacked) {
+ return stacked == other;
+ }
+ bitmask |= UNORDERED_COMPARE_FLAG;
+ stack.set(object, other);
+ var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
+ stack["delete"](object);
+ return result;
+ case symbolTag:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+ }
+ return false;
+ }
+ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length;
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+ var index = objLength;
+ while (index--) {
+ var key = objProps[index];
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ }
+ var stacked = stack.get(object);
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+ var result = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key], othValue = other[key];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ }
+ if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
+ result = false;
+ break;
+ }
+ skipCtor || (skipCtor = key == "constructor");
+ }
+ if (result && !skipCtor) {
+ var objCtor = object.constructor, othCtor = other.constructor;
+ if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
+ result = false;
+ }
+ }
+ stack["delete"](object);
+ stack["delete"](other);
+ return result;
+ }
+ function getMapData(map, key) {
+ var data = map.__data__;
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ }
+ function getMatchData(object) {
+ var result = keys(object), length = result.length;
+ while (length--) {
+ var key = result[length], value = object[key];
+ result[length] = [key, value, isStrictComparable(value)];
+ }
+ return result;
+ }
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : void 0;
+ }
+ var getTag = baseGetTag;
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
+ getTag = function(value) {
+ var result = objectToString.call(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : void 0;
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag;
+ case mapCtorString:
+ return mapTag;
+ case promiseCtorString:
+ return promiseTag;
+ case setCtorString:
+ return setTag;
+ case weakMapCtorString:
+ return weakMapTag;
+ }
+ }
+ return result;
+ };
+ }
+ function hasPath(object, path, hasFunc) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var result, index = -1, length = path.length;
+ while (++index < length) {
+ var key = toKey(path[index]);
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
+ }
+ object = object[key];
+ }
+ if (result) {
+ return result;
+ }
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
+ }
+ function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ function isKey(value, object) {
+ if (isArray(value)) {
+ return false;
+ }
+ var type = typeof value;
+ if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
+ return true;
+ }
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
+ }
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+ }
+ function isMasked(func2) {
+ return !!maskSrcKey && maskSrcKey in func2;
+ }
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+ function matchesStrictComparable(key, srcValue) {
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
+ };
+ }
+ var stringToPath = memoize(function(string) {
+ string = toString(string);
+ var result = [];
+ if (reLeadingDot.test(string)) {
+ result.push("");
+ }
+ string.replace(rePropName, function(match, number, quote, string2) {
+ result.push(quote ? string2.replace(reEscapeChar, "$1") : number || match);
+ });
+ return result;
+ });
+ function toKey(value) {
+ if (typeof value == "string" || isSymbol(value)) {
+ return value;
+ }
+ var result = value + "";
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
+ }
+ function toSource(func2) {
+ if (func2 != null) {
+ try {
+ return funcToString.call(func2);
+ } catch (e) {
+ }
+ try {
+ return func2 + "";
+ } catch (e) {
+ }
+ }
+ return "";
+ }
+ var keyBy2 = createAggregator(function(result, value, key) {
+ result[key] = value;
+ });
+ function memoize(func2, resolver) {
+ if (typeof func2 != "function" || resolver && typeof resolver != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ var memoized = function() {
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
+ if (cache.has(key)) {
+ return cache.get(key);
+ }
+ var result = func2.apply(this, args);
+ memoized.cache = cache.set(key, result);
+ return result;
+ };
+ memoized.cache = new (memoize.Cache || MapCache)();
+ return memoized;
+ }
+ memoize.Cache = MapCache;
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ function isArguments(value) {
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
+ }
+ var isArray = Array.isArray;
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ function isFunction(value) {
+ var tag = isObject(value) ? objectToString.call(value) : "";
+ return tag == funcTag || tag == genTag;
+ }
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == "object" || type == "function");
+ }
+ function isObjectLike(value) {
+ return !!value && typeof value == "object";
+ }
+ function isSymbol(value) {
+ return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
+ }
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ function toString(value) {
+ return value == null ? "" : baseToString(value);
+ }
+ function get(object, path, defaultValue) {
+ var result = object == null ? void 0 : baseGet(object, path);
+ return result === void 0 ? defaultValue : result;
+ }
+ function hasIn(object, path) {
+ return object != null && hasPath(object, path, baseHasIn);
+ }
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ function identity(value) {
+ return value;
+ }
+ function property(path) {
+ return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+ }
+ module2.exports = keyBy2;
+ }
+});
+
+// node_modules/lodash.values/index.js
+var require_lodash4 = __commonJS({
+ "node_modules/lodash.values/index.js"(exports, module2) {
+ var MAX_SAFE_INTEGER = 9007199254740991;
+ var argsTag = "[object Arguments]";
+ var funcTag = "[object Function]";
+ var genTag = "[object GeneratorFunction]";
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ function arrayMap(array, iteratee) {
+ var index = -1, length = array ? array.length : 0, result = Array(length);
+ while (++index < length) {
+ result[index] = iteratee(array[index], index, array);
+ }
+ return result;
+ }
+ function baseTimes(n, iteratee) {
+ var index = -1, result = Array(n);
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ function baseValues(object, props) {
+ return arrayMap(props, function(key) {
+ return object[key];
+ });
+ }
+ function overArg(func2, transform) {
+ return function(arg) {
+ return func2(transform(arg));
+ };
+ }
+ var objectProto = Object.prototype;
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ var objectToString = objectProto.toString;
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+ var nativeKeys = overArg(Object.keys, Object);
+ function arrayLikeKeys(value, inherited) {
+ var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
+ var length = result.length, skipIndexes = !!length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != "constructor") {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ function isArguments(value) {
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
+ }
+ var isArray = Array.isArray;
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ function isFunction(value) {
+ var tag = isObject(value) ? objectToString.call(value) : "";
+ return tag == funcTag || tag == genTag;
+ }
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == "object" || type == "function");
+ }
+ function isObjectLike(value) {
+ return !!value && typeof value == "object";
+ }
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ function values2(object) {
+ return object ? baseValues(object, keys(object)) : [];
+ }
+ module2.exports = values2;
+ }
+});
+
+// node_modules/lodash.sortby/index.js
+var require_lodash5 = __commonJS({
+ "node_modules/lodash.sortby/index.js"(exports, module2) {
+ var LARGE_ARRAY_SIZE = 200;
+ var FUNC_ERROR_TEXT = "Expected a function";
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var UNORDERED_COMPARE_FLAG = 1;
+ var PARTIAL_COMPARE_FLAG = 2;
+ var INFINITY = 1 / 0;
+ var MAX_SAFE_INTEGER = 9007199254740991;
+ var argsTag = "[object Arguments]";
+ var arrayTag = "[object Array]";
+ var boolTag = "[object Boolean]";
+ var dateTag = "[object Date]";
+ var errorTag = "[object Error]";
+ var funcTag = "[object Function]";
+ var genTag = "[object GeneratorFunction]";
+ var mapTag = "[object Map]";
+ var numberTag = "[object Number]";
+ var objectTag = "[object Object]";
+ var promiseTag = "[object Promise]";
+ var regexpTag = "[object RegExp]";
+ var setTag = "[object Set]";
+ var stringTag = "[object String]";
+ var symbolTag = "[object Symbol]";
+ var weakMapTag = "[object WeakMap]";
+ var arrayBufferTag = "[object ArrayBuffer]";
+ var dataViewTag = "[object DataView]";
+ var float32Tag = "[object Float32Array]";
+ var float64Tag = "[object Float64Array]";
+ var int8Tag = "[object Int8Array]";
+ var int16Tag = "[object Int16Array]";
+ var int32Tag = "[object Int32Array]";
+ var uint8Tag = "[object Uint8Array]";
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
+ var uint16Tag = "[object Uint16Array]";
+ var uint32Tag = "[object Uint32Array]";
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/;
+ var reIsPlainProp = /^\w*$/;
+ var reLeadingDot = /^\./;
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ var reEscapeChar = /\\(\\)?/g;
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+ var root = freeGlobal || freeSelf || Function("return this")();
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ var freeProcess = moduleExports && freeGlobal.process;
+ var nodeUtil = function() {
+ try {
+ return freeProcess && freeProcess.binding("util");
+ } catch (e) {
+ }
+ }();
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ function apply(func2, thisArg, args) {
+ switch (args.length) {
+ case 0:
+ return func2.call(thisArg);
+ case 1:
+ return func2.call(thisArg, args[0]);
+ case 2:
+ return func2.call(thisArg, args[0], args[1]);
+ case 3:
+ return func2.call(thisArg, args[0], args[1], args[2]);
+ }
+ return func2.apply(thisArg, args);
+ }
+ function arrayMap(array, iteratee) {
+ var index = -1, length = array ? array.length : 0, result = Array(length);
+ while (++index < length) {
+ result[index] = iteratee(array[index], index, array);
+ }
+ return result;
+ }
+ function arrayPush(array, values2) {
+ var index = -1, length = values2.length, offset2 = array.length;
+ while (++index < length) {
+ array[offset2 + index] = values2[index];
+ }
+ return array;
+ }
+ function arraySome(array, predicate) {
+ var index = -1, length = array ? array.length : 0;
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function baseProperty(key) {
+ return function(object) {
+ return object == null ? void 0 : object[key];
+ };
+ }
+ function baseSortBy(array, comparer) {
+ var length = array.length;
+ array.sort(comparer);
+ while (length--) {
+ array[length] = array[length].value;
+ }
+ return array;
+ }
+ function baseTimes(n, iteratee) {
+ var index = -1, result = Array(n);
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ function baseUnary(func2) {
+ return function(value) {
+ return func2(value);
+ };
+ }
+ function getValue(object, key) {
+ return object == null ? void 0 : object[key];
+ }
+ function isHostObject(value) {
+ var result = false;
+ if (value != null && typeof value.toString != "function") {
+ try {
+ result = !!(value + "");
+ } catch (e) {
+ }
+ }
+ return result;
+ }
+ function mapToArray(map) {
+ var index = -1, result = Array(map.size);
+ map.forEach(function(value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ function overArg(func2, transform) {
+ return function(arg) {
+ return func2(transform(arg));
+ };
+ }
+ function setToArray(set) {
+ var index = -1, result = Array(set.size);
+ set.forEach(function(value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ var arrayProto = Array.prototype;
+ var funcProto = Function.prototype;
+ var objectProto = Object.prototype;
+ var coreJsData = root["__core-js_shared__"];
+ var maskSrcKey = function() {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+ return uid ? "Symbol(src)_1." + uid : "";
+ }();
+ var funcToString = funcProto.toString;
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ var objectToString = objectProto.toString;
+ var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
+ var Symbol2 = root.Symbol;
+ var Uint8Array2 = root.Uint8Array;
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+ var splice = arrayProto.splice;
+ var spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : void 0;
+ var nativeKeys = overArg(Object.keys, Object);
+ var nativeMax = Math.max;
+ var DataView = getNative(root, "DataView");
+ var Map2 = getNative(root, "Map");
+ var Promise2 = getNative(root, "Promise");
+ var Set2 = getNative(root, "Set");
+ var WeakMap = getNative(root, "WeakMap");
+ var nativeCreate = getNative(Object, "create");
+ var dataViewCtorString = toSource(DataView);
+ var mapCtorString = toSource(Map2);
+ var promiseCtorString = toSource(Promise2);
+ var setCtorString = toSource(Set2);
+ var weakMapCtorString = toSource(WeakMap);
+ var symbolProto = Symbol2 ? Symbol2.prototype : void 0;
+ var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
+ var symbolToString = symbolProto ? symbolProto.toString : void 0;
+ function Hash(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ }
+ function hashDelete(key) {
+ return this.has(key) && delete this.__data__[key];
+ }
+ function hashGet(key) {
+ var data = this.__data__;
+ if (nativeCreate) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? void 0 : result;
+ }
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
+ }
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
+ }
+ function hashSet(key, value) {
+ var data = this.__data__;
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
+ return this;
+ }
+ Hash.prototype.clear = hashClear;
+ Hash.prototype["delete"] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ function ListCache(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function listCacheClear() {
+ this.__data__ = [];
+ }
+ function listCacheDelete(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ return false;
+ }
+ var lastIndex = data.length - 1;
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+ return true;
+ }
+ function listCacheGet(key) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ return index < 0 ? void 0 : data[index][1];
+ }
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ function listCacheSet(key, value) {
+ var data = this.__data__, index = assocIndexOf(data, key);
+ if (index < 0) {
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+ return this;
+ }
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype["delete"] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ function MapCache(entries) {
+ var index = -1, length = entries ? entries.length : 0;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ function mapCacheClear() {
+ this.__data__ = {
+ "hash": new Hash(),
+ "map": new (Map2 || ListCache)(),
+ "string": new Hash()
+ };
+ }
+ function mapCacheDelete(key) {
+ return getMapData(this, key)["delete"](key);
+ }
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ function mapCacheSet(key, value) {
+ getMapData(this, key).set(key, value);
+ return this;
+ }
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype["delete"] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ function SetCache(values2) {
+ var index = -1, length = values2 ? values2.length : 0;
+ this.__data__ = new MapCache();
+ while (++index < length) {
+ this.add(values2[index]);
+ }
+ }
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED);
+ return this;
+ }
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ }
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+ SetCache.prototype.has = setCacheHas;
+ function Stack(entries) {
+ this.__data__ = new ListCache(entries);
+ }
+ function stackClear() {
+ this.__data__ = new ListCache();
+ }
+ function stackDelete(key) {
+ return this.__data__["delete"](key);
+ }
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ function stackSet(key, value) {
+ var cache = this.__data__;
+ if (cache instanceof ListCache) {
+ var pairs = cache.__data__;
+ if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ return this;
+ }
+ cache = this.__data__ = new MapCache(pairs);
+ }
+ cache.set(key, value);
+ return this;
+ }
+ Stack.prototype.clear = stackClear;
+ Stack.prototype["delete"] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ function arrayLikeKeys(value, inherited) {
+ var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
+ var length = result.length, skipIndexes = !!length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function assocIndexOf(array, key) {
+ var length = array.length;
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+ return -1;
+ }
+ var baseEach = createBaseEach(baseForOwn);
+ function baseFlatten(array, depth, predicate, isStrict, result) {
+ var index = -1, length = array.length;
+ predicate || (predicate = isFlattenable);
+ result || (result = []);
+ while (++index < length) {
+ var value = array[index];
+ if (depth > 0 && predicate(value)) {
+ if (depth > 1) {
+ baseFlatten(value, depth - 1, predicate, isStrict, result);
+ } else {
+ arrayPush(result, value);
+ }
+ } else if (!isStrict) {
+ result[result.length] = value;
+ }
+ }
+ return result;
+ }
+ var baseFor = createBaseFor();
+ function baseForOwn(object, iteratee) {
+ return object && baseFor(object, iteratee, keys);
+ }
+ function baseGet(object, path) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var index = 0, length = path.length;
+ while (object != null && index < length) {
+ object = object[toKey(path[index++])];
+ }
+ return index && index == length ? object : void 0;
+ }
+ function baseGetTag(value) {
+ return objectToString.call(value);
+ }
+ function baseHasIn(object, key) {
+ return object != null && key in Object(object);
+ }
+ function baseIsEqual(value, other, customizer, bitmask, stack) {
+ if (value === other) {
+ return true;
+ }
+ if (value == null || other == null || !isObject(value) && !isObjectLike(other)) {
+ return value !== value && other !== other;
+ }
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
+ }
+ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
+ var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag;
+ if (!objIsArr) {
+ objTag = getTag(object);
+ objTag = objTag == argsTag ? objectTag : objTag;
+ }
+ if (!othIsArr) {
+ othTag = getTag(other);
+ othTag = othTag == argsTag ? objectTag : othTag;
+ }
+ var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag;
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack());
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
+ }
+ if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack());
+ return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
+ }
+ }
+ if (!isSameTag) {
+ return false;
+ }
+ stack || (stack = new Stack());
+ return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
+ }
+ function baseIsMatch(object, source, matchData, customizer) {
+ var index = matchData.length, length = index, noCustomizer = !customizer;
+ if (object == null) {
+ return !length;
+ }
+ object = Object(object);
+ while (index--) {
+ var data = matchData[index];
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
+ return false;
+ }
+ }
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0], objValue = object[key], srcValue = data[1];
+ if (noCustomizer && data[2]) {
+ if (objValue === void 0 && !(key in object)) {
+ return false;
+ }
+ } else {
+ var stack = new Stack();
+ if (customizer) {
+ var result = customizer(objValue, srcValue, key, object, source, stack);
+ }
+ if (!(result === void 0 ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+ var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
+ }
+ function baseIteratee(value) {
+ if (typeof value == "function") {
+ return value;
+ }
+ if (value == null) {
+ return identity;
+ }
+ if (typeof value == "object") {
+ return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
+ }
+ return property(value);
+ }
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != "constructor") {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ function baseMap(collection, iteratee) {
+ var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
+ baseEach(collection, function(value, key, collection2) {
+ result[++index] = iteratee(value, key, collection2);
+ });
+ return result;
+ }
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+ if (matchData.length == 1 && matchData[0][2]) {
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+ }
+ return function(object) {
+ return object === source || baseIsMatch(object, source, matchData);
+ };
+ }
+ function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(toKey(path), srcValue);
+ }
+ return function(object) {
+ var objValue = get(object, path);
+ return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, void 0, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
+ };
+ }
+ function baseOrderBy(collection, iteratees, orders) {
+ var index = -1;
+ iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));
+ var result = baseMap(collection, function(value, key, collection2) {
+ var criteria = arrayMap(iteratees, function(iteratee) {
+ return iteratee(value);
+ });
+ return { "criteria": criteria, "index": ++index, "value": value };
+ });
+ return baseSortBy(result, function(object, other) {
+ return compareMultiple(object, other, orders);
+ });
+ }
+ function basePropertyDeep(path) {
+ return function(object) {
+ return baseGet(object, path);
+ };
+ }
+ function baseRest(func2, start2) {
+ start2 = nativeMax(start2 === void 0 ? func2.length - 1 : start2, 0);
+ return function() {
+ var args = arguments, index = -1, length = nativeMax(args.length - start2, 0), array = Array(length);
+ while (++index < length) {
+ array[index] = args[start2 + index];
+ }
+ index = -1;
+ var otherArgs = Array(start2 + 1);
+ while (++index < start2) {
+ otherArgs[index] = args[index];
+ }
+ otherArgs[start2] = array;
+ return apply(func2, this, otherArgs);
+ };
+ }
+ function baseToString(value) {
+ if (typeof value == "string") {
+ return value;
+ }
+ if (isSymbol(value)) {
+ return symbolToString ? symbolToString.call(value) : "";
+ }
+ var result = value + "";
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
+ }
+ function castPath(value) {
+ return isArray(value) ? value : stringToPath(value);
+ }
+ function compareAscending(value, other) {
+ if (value !== other) {
+ var valIsDefined = value !== void 0, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);
+ var othIsDefined = other !== void 0, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);
+ if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
+ return 1;
+ }
+ if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
+ return -1;
+ }
+ }
+ return 0;
+ }
+ function compareMultiple(object, other, orders) {
+ var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;
+ while (++index < length) {
+ var result = compareAscending(objCriteria[index], othCriteria[index]);
+ if (result) {
+ if (index >= ordersLength) {
+ return result;
+ }
+ var order2 = orders[index];
+ return result * (order2 == "desc" ? -1 : 1);
+ }
+ }
+ return object.index - other.index;
+ }
+ function createBaseEach(eachFunc, fromRight) {
+ return function(collection, iteratee) {
+ if (collection == null) {
+ return collection;
+ }
+ if (!isArrayLike(collection)) {
+ return eachFunc(collection, iteratee);
+ }
+ var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);
+ while (fromRight ? index-- : ++index < length) {
+ if (iteratee(iterable[index], index, iterable) === false) {
+ break;
+ }
+ }
+ return collection;
+ };
+ }
+ function createBaseFor(fromRight) {
+ return function(object, iteratee, keysFunc) {
+ var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
+ while (length--) {
+ var key = props[fromRight ? length : ++index];
+ if (iteratee(iterable[key], key, iterable) === false) {
+ break;
+ }
+ }
+ return object;
+ };
+ }
+ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length;
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ }
+ var stacked = stack.get(array);
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+ var index = -1, result = true, seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : void 0;
+ stack.set(array, other);
+ stack.set(other, array);
+ while (++index < arrLength) {
+ var arrValue = array[index], othValue = other[index];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
+ }
+ if (compared !== void 0) {
+ if (compared) {
+ continue;
+ }
+ result = false;
+ break;
+ }
+ if (seen) {
+ if (!arraySome(other, function(othValue2, othIndex) {
+ if (!seen.has(othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, customizer, bitmask, stack))) {
+ return seen.add(othIndex);
+ }
+ })) {
+ result = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ result = false;
+ break;
+ }
+ }
+ stack["delete"](array);
+ stack["delete"](other);
+ return result;
+ }
+ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
+ switch (tag) {
+ case dataViewTag:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+ object = object.buffer;
+ other = other.buffer;
+ case arrayBufferTag:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
+ return false;
+ }
+ return true;
+ case boolTag:
+ case dateTag:
+ case numberTag:
+ return eq(+object, +other);
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+ case regexpTag:
+ case stringTag:
+ return object == other + "";
+ case mapTag:
+ var convert = mapToArray;
+ case setTag:
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
+ convert || (convert = setToArray);
+ if (object.size != other.size && !isPartial) {
+ return false;
+ }
+ var stacked = stack.get(object);
+ if (stacked) {
+ return stacked == other;
+ }
+ bitmask |= UNORDERED_COMPARE_FLAG;
+ stack.set(object, other);
+ var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
+ stack["delete"](object);
+ return result;
+ case symbolTag:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+ }
+ return false;
+ }
+ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG, objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length;
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+ var index = objLength;
+ while (index--) {
+ var key = objProps[index];
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ }
+ var stacked = stack.get(object);
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+ var result = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key], othValue = other[key];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ }
+ if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
+ result = false;
+ break;
+ }
+ skipCtor || (skipCtor = key == "constructor");
+ }
+ if (result && !skipCtor) {
+ var objCtor = object.constructor, othCtor = other.constructor;
+ if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
+ result = false;
+ }
+ }
+ stack["delete"](object);
+ stack["delete"](other);
+ return result;
+ }
+ function getMapData(map, key) {
+ var data = map.__data__;
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ }
+ function getMatchData(object) {
+ var result = keys(object), length = result.length;
+ while (length--) {
+ var key = result[length], value = object[key];
+ result[length] = [key, value, isStrictComparable(value)];
+ }
+ return result;
+ }
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : void 0;
+ }
+ var getTag = baseGetTag;
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
+ getTag = function(value) {
+ var result = objectToString.call(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : void 0;
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag;
+ case mapCtorString:
+ return mapTag;
+ case promiseCtorString:
+ return promiseTag;
+ case setCtorString:
+ return setTag;
+ case weakMapCtorString:
+ return weakMapTag;
+ }
+ }
+ return result;
+ };
+ }
+ function hasPath(object, path, hasFunc) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var result, index = -1, length = path.length;
+ while (++index < length) {
+ var key = toKey(path[index]);
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
+ }
+ object = object[key];
+ }
+ if (result) {
+ return result;
+ }
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
+ }
+ function isFlattenable(value) {
+ return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
+ }
+ function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ function isIterateeCall(value, index, object) {
+ if (!isObject(object)) {
+ return false;
+ }
+ var type = typeof index;
+ if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
+ return eq(object[index], value);
+ }
+ return false;
+ }
+ function isKey(value, object) {
+ if (isArray(value)) {
+ return false;
+ }
+ var type = typeof value;
+ if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
+ return true;
+ }
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
+ }
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+ }
+ function isMasked(func2) {
+ return !!maskSrcKey && maskSrcKey in func2;
+ }
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+ function matchesStrictComparable(key, srcValue) {
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
+ };
+ }
+ var stringToPath = memoize(function(string) {
+ string = toString(string);
+ var result = [];
+ if (reLeadingDot.test(string)) {
+ result.push("");
+ }
+ string.replace(rePropName, function(match, number, quote, string2) {
+ result.push(quote ? string2.replace(reEscapeChar, "$1") : number || match);
+ });
+ return result;
+ });
+ function toKey(value) {
+ if (typeof value == "string" || isSymbol(value)) {
+ return value;
+ }
+ var result = value + "";
+ return result == "0" && 1 / value == -INFINITY ? "-0" : result;
+ }
+ function toSource(func2) {
+ if (func2 != null) {
+ try {
+ return funcToString.call(func2);
+ } catch (e) {
+ }
+ try {
+ return func2 + "";
+ } catch (e) {
+ }
+ }
+ return "";
+ }
+ var sortBy3 = baseRest(function(collection, iteratees) {
+ if (collection == null) {
+ return [];
+ }
+ var length = iteratees.length;
+ if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
+ iteratees = [];
+ } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
+ iteratees = [iteratees[0]];
+ }
+ return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
+ });
+ function memoize(func2, resolver) {
+ if (typeof func2 != "function" || resolver && typeof resolver != "function") {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ var memoized = function() {
+ var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
+ if (cache.has(key)) {
+ return cache.get(key);
+ }
+ var result = func2.apply(this, args);
+ memoized.cache = cache.set(key, result);
+ return result;
+ };
+ memoized.cache = new (memoize.Cache || MapCache)();
+ return memoized;
+ }
+ memoize.Cache = MapCache;
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ function isArguments(value) {
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
+ }
+ var isArray = Array.isArray;
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ function isFunction(value) {
+ var tag = isObject(value) ? objectToString.call(value) : "";
+ return tag == funcTag || tag == genTag;
+ }
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == "object" || type == "function");
+ }
+ function isObjectLike(value) {
+ return !!value && typeof value == "object";
+ }
+ function isSymbol(value) {
+ return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
+ }
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ function toString(value) {
+ return value == null ? "" : baseToString(value);
+ }
+ function get(object, path, defaultValue) {
+ var result = object == null ? void 0 : baseGet(object, path);
+ return result === void 0 ? defaultValue : result;
+ }
+ function hasIn(object, path) {
+ return object != null && hasPath(object, path, baseHasIn);
+ }
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ function identity(value) {
+ return value;
+ }
+ function property(path) {
+ return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+ }
+ module2.exports = sortBy3;
+ }
+});
+
+// src/main.ts
+__export(exports, {
+ default: () => RssReaderPlugin
+});
+var import_obsidian28 = __toModule(require("obsidian"));
+
+// src/settings/settings.ts
+var DEFAULT_SETTINGS = Object.freeze({
+ feeds: [],
+ updateTime: 60,
+ filtered: [{
+ name: "Favorites",
+ read: true,
+ unread: true,
+ filterTags: [],
+ filterFolders: [],
+ filterFeeds: [],
+ ignoreTags: [],
+ ignoreFeeds: [],
+ ignoreFolders: [],
+ favorites: true,
+ sortOrder: "ALPHABET_NORMAL"
+ }],
+ saveLocation: "default",
+ displayStyle: "cards",
+ saveLocationFolder: "",
+ items: [],
+ dateFormat: "YYYY-MM-DDTHH:mm:SS",
+ template: "---\nlink: {{link}}\nauthor: {{author}}\npublished: {{published}}\ntags: [{{tags:,}}]\n---\n# Highlights\n{{highlights}}\n\n---\n# {{title}}\n{{content}}",
+ pasteTemplate: "## {{title}}\n{{content}}",
+ askForFilename: true,
+ defaultFilename: "{{title}}",
+ autoSync: false,
+ hotkeys: {
+ create: "n",
+ paste: "v",
+ copy: "c",
+ favorite: "f",
+ read: "r",
+ tags: "t",
+ open: "o",
+ tts: "s",
+ previous: "ArrowLeft",
+ next: "ArrowRight"
+ },
+ folded: [],
+ renamedText: {
+ filtered_folders: "",
+ folders: "",
+ no_folder: ""
+ },
+ displayMedia: true
+});
+
+// src/view/ViewLoader.ts
+var import_obsidian16 = __toModule(require("obsidian"));
+
+// node_modules/svelte/internal/index.mjs
+function noop() {
+}
+function run(fn2) {
+ return fn2();
+}
+function blank_object() {
+ return Object.create(null);
+}
+function run_all(fns) {
+ fns.forEach(run);
+}
+function is_function(thing) {
+ return typeof thing === "function";
+}
+function safe_not_equal(a, b) {
+ return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function");
+}
+var src_url_equal_anchor;
+function src_url_equal(element_src, url) {
+ if (!src_url_equal_anchor) {
+ src_url_equal_anchor = document.createElement("a");
+ }
+ src_url_equal_anchor.href = url;
+ return element_src === src_url_equal_anchor.href;
+}
+function is_empty(obj) {
+ return Object.keys(obj).length === 0;
+}
+function subscribe(store, ...callbacks) {
+ if (store == null) {
+ return noop;
+ }
+ const unsub = store.subscribe(...callbacks);
+ return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
+}
+function get_store_value(store) {
+ let value;
+ subscribe(store, (_) => value = _)();
+ return value;
+}
+function component_subscribe(component, store, callback) {
+ component.$$.on_destroy.push(subscribe(store, callback));
+}
+function action_destroyer(action_result) {
+ return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
+}
+var tasks = new Set();
+var is_hydrating = false;
+function start_hydrating() {
+ is_hydrating = true;
+}
+function end_hydrating() {
+ is_hydrating = false;
+}
+function append(target, node) {
+ target.appendChild(node);
+}
+function insert(target, node, anchor) {
+ target.insertBefore(node, anchor || null);
+}
+function detach(node) {
+ node.parentNode.removeChild(node);
+}
+function destroy_each(iterations, detaching) {
+ for (let i = 0; i < iterations.length; i += 1) {
+ if (iterations[i])
+ iterations[i].d(detaching);
+ }
+}
+function element(name) {
+ return document.createElement(name);
+}
+function text(data) {
+ return document.createTextNode(data);
+}
+function space() {
+ return text(" ");
+}
+function empty() {
+ return text("");
+}
+function listen(node, event, handler, options) {
+ node.addEventListener(event, handler, options);
+ return () => node.removeEventListener(event, handler, options);
+}
+function attr(node, attribute, value) {
+ if (value == null)
+ node.removeAttribute(attribute);
+ else if (node.getAttribute(attribute) !== value)
+ node.setAttribute(attribute, value);
+}
+function children(element2) {
+ return Array.from(element2.childNodes);
+}
+function set_data(text2, data) {
+ data = "" + data;
+ if (text2.wholeText !== data)
+ text2.data = data;
+}
+function set_style(node, key, value, important) {
+ if (value === null) {
+ node.style.removeProperty(key);
+ } else {
+ node.style.setProperty(key, value, important ? "important" : "");
+ }
+}
+var managed_styles = new Map();
+var current_component;
+function set_current_component(component) {
+ current_component = component;
+}
+var dirty_components = [];
+var binding_callbacks = [];
+var render_callbacks = [];
+var flush_callbacks = [];
+var resolved_promise = Promise.resolve();
+var update_scheduled = false;
+function schedule_update() {
+ if (!update_scheduled) {
+ update_scheduled = true;
+ resolved_promise.then(flush);
+ }
+}
+function add_render_callback(fn2) {
+ render_callbacks.push(fn2);
+}
+var seen_callbacks = new Set();
+var flushidx = 0;
+function flush() {
+ const saved_component = current_component;
+ do {
+ while (flushidx < dirty_components.length) {
+ const component = dirty_components[flushidx];
+ flushidx++;
+ set_current_component(component);
+ update(component.$$);
+ }
+ set_current_component(null);
+ dirty_components.length = 0;
+ flushidx = 0;
+ while (binding_callbacks.length)
+ binding_callbacks.pop()();
+ for (let i = 0; i < render_callbacks.length; i += 1) {
+ const callback = render_callbacks[i];
+ if (!seen_callbacks.has(callback)) {
+ seen_callbacks.add(callback);
+ callback();
+ }
+ }
+ render_callbacks.length = 0;
+ } while (dirty_components.length);
+ while (flush_callbacks.length) {
+ flush_callbacks.pop()();
+ }
+ update_scheduled = false;
+ seen_callbacks.clear();
+ set_current_component(saved_component);
+}
+function update($$) {
+ if ($$.fragment !== null) {
+ $$.update();
+ run_all($$.before_update);
+ const dirty = $$.dirty;
+ $$.dirty = [-1];
+ $$.fragment && $$.fragment.p($$.ctx, dirty);
+ $$.after_update.forEach(add_render_callback);
+ }
+}
+var outroing = new Set();
+var outros;
+function group_outros() {
+ outros = {
+ r: 0,
+ c: [],
+ p: outros
+ };
+}
+function check_outros() {
+ if (!outros.r) {
+ run_all(outros.c);
+ }
+ outros = outros.p;
+}
+function transition_in(block, local) {
+ if (block && block.i) {
+ outroing.delete(block);
+ block.i(local);
+ }
+}
+function transition_out(block, local, detach2, callback) {
+ if (block && block.o) {
+ if (outroing.has(block))
+ return;
+ outroing.add(block);
+ outros.c.push(() => {
+ outroing.delete(block);
+ if (callback) {
+ if (detach2)
+ block.d(1);
+ callback();
+ }
+ });
+ block.o(local);
+ }
+}
+var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global;
+var boolean_attributes = new Set([
+ "allowfullscreen",
+ "allowpaymentrequest",
+ "async",
+ "autofocus",
+ "autoplay",
+ "checked",
+ "controls",
+ "default",
+ "defer",
+ "disabled",
+ "formnovalidate",
+ "hidden",
+ "ismap",
+ "loop",
+ "multiple",
+ "muted",
+ "nomodule",
+ "novalidate",
+ "open",
+ "playsinline",
+ "readonly",
+ "required",
+ "reversed",
+ "selected"
+]);
+function create_component(block) {
+ block && block.c();
+}
+function mount_component(component, target, anchor, customElement) {
+ const { fragment, on_mount, on_destroy, after_update } = component.$$;
+ fragment && fragment.m(target, anchor);
+ if (!customElement) {
+ add_render_callback(() => {
+ const new_on_destroy = on_mount.map(run).filter(is_function);
+ if (on_destroy) {
+ on_destroy.push(...new_on_destroy);
+ } else {
+ run_all(new_on_destroy);
+ }
+ component.$$.on_mount = [];
+ });
+ }
+ after_update.forEach(add_render_callback);
+}
+function destroy_component(component, detaching) {
+ const $$ = component.$$;
+ if ($$.fragment !== null) {
+ run_all($$.on_destroy);
+ $$.fragment && $$.fragment.d(detaching);
+ $$.on_destroy = $$.fragment = null;
+ $$.ctx = [];
+ }
+}
+function make_dirty(component, i) {
+ if (component.$$.dirty[0] === -1) {
+ dirty_components.push(component);
+ schedule_update();
+ component.$$.dirty.fill(0);
+ }
+ component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
+}
+function init(component, options, instance9, create_fragment9, not_equal, props, append_styles, dirty = [-1]) {
+ const parent_component = current_component;
+ set_current_component(component);
+ const $$ = component.$$ = {
+ fragment: null,
+ ctx: null,
+ props,
+ update: noop,
+ not_equal,
+ bound: blank_object(),
+ on_mount: [],
+ on_destroy: [],
+ on_disconnect: [],
+ before_update: [],
+ after_update: [],
+ context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
+ callbacks: blank_object(),
+ dirty,
+ skip_bound: false,
+ root: options.target || parent_component.$$.root
+ };
+ append_styles && append_styles($$.root);
+ let ready = false;
+ $$.ctx = instance9 ? instance9(component, options.props || {}, (i, ret, ...rest) => {
+ const value = rest.length ? rest[0] : ret;
+ if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
+ if (!$$.skip_bound && $$.bound[i])
+ $$.bound[i](value);
+ if (ready)
+ make_dirty(component, i);
+ }
+ return ret;
+ }) : [];
+ $$.update();
+ ready = true;
+ run_all($$.before_update);
+ $$.fragment = create_fragment9 ? create_fragment9($$.ctx) : false;
+ if (options.target) {
+ if (options.hydrate) {
+ start_hydrating();
+ const nodes = children(options.target);
+ $$.fragment && $$.fragment.l(nodes);
+ nodes.forEach(detach);
+ } else {
+ $$.fragment && $$.fragment.c();
+ }
+ if (options.intro)
+ transition_in(component.$$.fragment);
+ mount_component(component, options.target, options.anchor, options.customElement);
+ end_hydrating();
+ flush();
+ }
+ set_current_component(parent_component);
+}
+var SvelteElement;
+if (typeof HTMLElement === "function") {
+ SvelteElement = class extends HTMLElement {
+ constructor() {
+ super();
+ this.attachShadow({ mode: "open" });
+ }
+ connectedCallback() {
+ const { on_mount } = this.$$;
+ this.$$.on_disconnect = on_mount.map(run).filter(is_function);
+ for (const key in this.$$.slotted) {
+ this.appendChild(this.$$.slotted[key]);
+ }
+ }
+ attributeChangedCallback(attr2, _oldValue, newValue) {
+ this[attr2] = newValue;
+ }
+ disconnectedCallback() {
+ run_all(this.$$.on_disconnect);
+ }
+ $destroy() {
+ destroy_component(this, 1);
+ this.$destroy = noop;
+ }
+ $on(type, callback) {
+ const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
+ callbacks.push(callback);
+ return () => {
+ const index = callbacks.indexOf(callback);
+ if (index !== -1)
+ callbacks.splice(index, 1);
+ };
+ }
+ $set($$props) {
+ if (this.$$set && !is_empty($$props)) {
+ this.$$.skip_bound = true;
+ this.$$set($$props);
+ this.$$.skip_bound = false;
+ }
+ }
+ };
+}
+var SvelteComponent = class {
+ $destroy() {
+ destroy_component(this, 1);
+ this.$destroy = noop;
+ }
+ $on(type, callback) {
+ const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
+ callbacks.push(callback);
+ return () => {
+ const index = callbacks.indexOf(callback);
+ if (index !== -1)
+ callbacks.splice(index, 1);
+ };
+ }
+ $set($$props) {
+ if (this.$$set && !is_empty($$props)) {
+ this.$$.skip_bound = true;
+ this.$$set($$props);
+ this.$$.skip_bound = false;
+ }
+ }
+};
+
+// node_modules/svelte/store/index.mjs
+var subscriber_queue = [];
+function writable(value, start2 = noop) {
+ let stop;
+ const subscribers = new Set();
+ function set(new_value) {
+ if (safe_not_equal(value, new_value)) {
+ value = new_value;
+ if (stop) {
+ const run_queue = !subscriber_queue.length;
+ for (const subscriber of subscribers) {
+ subscriber[1]();
+ subscriber_queue.push(subscriber, value);
+ }
+ if (run_queue) {
+ for (let i = 0; i < subscriber_queue.length; i += 2) {
+ subscriber_queue[i][0](subscriber_queue[i + 1]);
+ }
+ subscriber_queue.length = 0;
+ }
+ }
+ }
+ }
+ function update2(fn2) {
+ set(fn2(value));
+ }
+ function subscribe2(run2, invalidate = noop) {
+ const subscriber = [run2, invalidate];
+ subscribers.add(subscriber);
+ if (subscribers.size === 1) {
+ stop = start2(set) || noop;
+ }
+ run2(value);
+ return () => {
+ subscribers.delete(subscriber);
+ if (subscribers.size === 0) {
+ stop();
+ stop = null;
+ }
+ };
+ }
+ return { set, update: update2, subscribe: subscribe2 };
+}
+
+// src/stores.ts
+var configuredFeedsStore = writable([]);
+var filteredStore = writable([]);
+var settingsStore = writable(DEFAULT_SETTINGS);
+var feedsStore = writable([]);
+var sortedFeedsStore = writable();
+var filteredItemsStore = writable();
+var foldedState = writable();
+var tagsStore = writable();
+var folderStore = writable();
+
+// src/view/IconComponent.svelte
+var import_obsidian = __toModule(require("obsidian"));
+function create_if_block(ctx) {
+ let span;
+ let icon_action;
+ let mounted;
+ let dispose;
+ return {
+ c() {
+ span = element("span");
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ if (!mounted) {
+ dispose = action_destroyer(icon_action = ctx[1].call(null, span, ctx[0]));
+ mounted = true;
+ }
+ },
+ p(ctx2, dirty) {
+ if (icon_action && is_function(icon_action.update) && dirty & 1)
+ icon_action.update.call(null, ctx2[0]);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function create_fragment(ctx) {
+ let if_block_anchor;
+ let if_block = ctx[0].length > 0 && create_if_block(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ },
+ p(ctx2, [dirty]) {
+ if (ctx2[0].length > 0) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ } else {
+ if_block = create_if_block(ctx2);
+ if_block.c();
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ if_block.d(1);
+ if_block = null;
+ }
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function instance($$self, $$props, $$invalidate) {
+ let { iconName = "" } = $$props;
+ const icon = (node, icon2) => {
+ (0, import_obsidian.setIcon)(node, icon2);
+ };
+ $$self.$$set = ($$props2) => {
+ if ("iconName" in $$props2)
+ $$invalidate(0, iconName = $$props2.iconName);
+ };
+ return [iconName, icon];
+}
+var IconComponent = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { iconName: 0 });
+ }
+};
+var IconComponent_default = IconComponent;
+
+// src/parser/rssParser.ts
+var import_obsidian2 = __toModule(require("obsidian"));
+var import_ts_md5 = __toModule(require_md5());
+function getElementByName(element2, name) {
+ let value;
+ if (typeof element2.getElementsByTagName !== "function" && typeof element2.getElementsByTagNameNS !== "function") {
+ return;
+ }
+ if (name.includes(":")) {
+ const [namespace, tag] = name.split(":");
+ const namespaceUri = element2.lookupNamespaceURI(namespace);
+ const byNamespace = element2.getElementsByTagNameNS(namespaceUri, tag);
+ if (byNamespace.length > 0) {
+ value = byNamespace[0].childNodes[0];
+ } else {
+ const tmp = element2.getElementsByTagName(name);
+ if (tmp.length > 0) {
+ if (tmp[0].childNodes.length === 0) {
+ value = tmp[0];
+ } else {
+ const node = tmp[0].childNodes[0];
+ if (node !== void 0) {
+ value = node;
+ }
+ }
+ }
+ }
+ } else if (name.includes(".")) {
+ const [prefix, tag] = name.split(".");
+ if (element2.getElementsByTagName(prefix).length > 0) {
+ const nodes = Array.from(element2.getElementsByTagName(prefix)[0].childNodes);
+ nodes.forEach((node) => {
+ if (node.nodeName == tag) {
+ value = node;
+ }
+ });
+ }
+ } else if (element2.getElementsByTagName(name).length > 0) {
+ if (element2.getElementsByTagName(name)[0].childNodes.length == 0) {
+ value = element2.getElementsByTagName(name)[0];
+ } else {
+ const node = element2.getElementsByTagName(name)[0].childNodes[0];
+ if (node !== void 0)
+ value = node;
+ }
+ }
+ return value;
+}
+function getContent(element2, names) {
+ let value;
+ for (const name of names) {
+ if (name.includes("#")) {
+ const [elementName, attr2] = name.split("#");
+ const data = getElementByName(element2, elementName);
+ if (data) {
+ if (data.nodeName === elementName) {
+ const tmp = data.getAttribute(attr2);
+ if (tmp.length > 0) {
+ value = tmp;
+ }
+ }
+ }
+ } else {
+ const data = getElementByName(element2, name);
+ if (data) {
+ if (data.wholeText && data.wholeText.length > 0) {
+ value = data.wholeText;
+ }
+ if (!value && data.nodeValue && data.nodeValue.length > 0) {
+ value = data.nodeValue;
+ }
+ if (!value && data.innerHTML && data.innerHTML.length > 0) {
+ value = data.innerHTML;
+ }
+ }
+ }
+ }
+ if (value === void 0) {
+ return "";
+ }
+ return value;
+}
+function buildItem(element2) {
+ return {
+ title: getContent(element2, ["title"]),
+ description: getContent(element2, ["content", "content:encoded", "itunes:summary", "description", "summary", "media:description"]),
+ content: getContent(element2, ["itunes:summary", "description", "summary", "media:description", "content", "content:encoded", "ns0:encoded"]),
+ category: getContent(element2, ["category"]),
+ link: getContent(element2, ["link", "link#href"]),
+ creator: getContent(element2, ["creator", "dc:creator", "author", "author.name"]),
+ pubDate: getContent(element2, ["pubDate", "published", "updated", "dc:date"]),
+ enclosure: getContent(element2, ["enclosure#url", "yt:videoId"]),
+ enclosureType: getContent(element2, ["enclosure#type"]),
+ image: getContent(element2, ["enclosure#url", "media:content#url", "itunes:image#href", "media:thumbnail#url"]),
+ id: getContent(element2, ["id"]),
+ language: null,
+ folder: null,
+ feed: null,
+ read: null,
+ favorite: null,
+ created: null,
+ tags: [],
+ hash: null,
+ highlights: []
+ };
+}
+function getAllItems(doc) {
+ const items = [];
+ if (doc.getElementsByTagName("item")) {
+ for (const elementsByTagNameKey in doc.getElementsByTagName("item")) {
+ const entry = doc.getElementsByTagName("item")[elementsByTagNameKey];
+ items.push(entry);
+ }
+ }
+ if (doc.getElementsByTagName("entry")) {
+ for (const elementsByTagNameKey in doc.getElementsByTagName("entry")) {
+ const entry = doc.getElementsByTagName("entry")[elementsByTagNameKey];
+ items.push(entry);
+ }
+ }
+ return items;
+}
+function requestFeed(feed) {
+ return __async(this, null, function* () {
+ return yield (0, import_obsidian2.request)({ url: feed.url });
+ });
+}
+function getFeedItems(feed) {
+ return __async(this, null, function* () {
+ let data;
+ try {
+ const rawData = yield requestFeed(feed);
+ data = new window.DOMParser().parseFromString(rawData, "text/xml");
+ } catch (e) {
+ console.error(e);
+ return Promise.resolve(void 0);
+ }
+ const items = [];
+ const rawItems = getAllItems(data);
+ const language = getContent(data, ["language"]).substr(0, 2);
+ rawItems.forEach((rawItem) => {
+ const item = buildItem(rawItem);
+ if (item.title !== void 0 && item.title.length !== 0) {
+ item.folder = feed.folder;
+ item.feed = feed.name;
+ item.read = false;
+ item.favorite = false;
+ item.created = false;
+ item.language = language;
+ item.hash = new import_ts_md5.Md5().appendStr(item.title).appendStr(item.folder).appendStr(item.link).end();
+ if (!item.image && feed.url.includes("youtube.com/feeds")) {
+ item.image = "https://i3.ytimg.com/vi/" + item.id.split(":")[2] + "/hqdefault.jpg";
+ }
+ items.push(item);
+ }
+ });
+ const image = getContent(data, ["image", "image.url", "icon"]);
+ const content = {
+ title: getContent(data, ["title"]),
+ subtitle: getContent(data, ["subtitle"]),
+ link: getContent(data, ["link"]),
+ image: image ? image.replace(/^\/|\/$/g, "") : null,
+ description: getContent(data, ["description"]),
+ items,
+ folder: feed.folder,
+ name: feed.name,
+ language,
+ hash: ""
+ };
+ return Promise.resolve(content);
+ });
+}
+
+// src/consts.ts
+var VIEW_ID = "RSS_FEED";
+var FILE_NAME_REGEX = /["\/<>:|?]/gm;
+var TAG_REGEX = /([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/u;
+var NUMBER_REGEX = /^[0-9]*$/gm;
+function sanitizeHTMLToDom(html) {
+ return window.DOMPurify.sanitize(html, {
+ ALLOW_UNKNOWN_PROTOCOLS: true,
+ RETURN_DOM_FRAGMENT: true,
+ RETURN_DOM_IMPORT: true,
+ FORBID_TAGS: ["style"],
+ ADD_TAGS: ["iframe"],
+ ADD_ATTR: ["frameborder", "allowfullscreen", "allow", "aria-label-position"]
+ });
+}
+function isValidHttpUrl(string) {
+ let url;
+ try {
+ url = new URL(string);
+ } catch (_) {
+ return false;
+ }
+ return url.protocol === "http:" || url.protocol === "https:";
+}
+
+// src/view/HtmlTooltip.svelte
+function create_if_block2(ctx) {
+ let p;
+ let html_action;
+ let mounted;
+ let dispose;
+ return {
+ c() {
+ p = element("p");
+ attr(p, "class", "tooltiptext");
+ },
+ m(target, anchor) {
+ insert(target, p, anchor);
+ if (!mounted) {
+ dispose = action_destroyer(html_action = ctx[1].call(null, p, ctx[0]));
+ mounted = true;
+ }
+ },
+ p(ctx2, dirty) {
+ if (html_action && is_function(html_action.update) && dirty & 1)
+ html_action.update.call(null, ctx2[0]);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(p);
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function create_fragment2(ctx) {
+ let if_block_anchor;
+ let if_block = ctx[0].length > 0 && create_if_block2(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ },
+ p(ctx2, [dirty]) {
+ if (ctx2[0].length > 0) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ } else {
+ if_block = create_if_block2(ctx2);
+ if_block.c();
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ if_block.d(1);
+ if_block = null;
+ }
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function instance2($$self, $$props, $$invalidate) {
+ let { content = "" } = $$props;
+ const html = (node, content2) => {
+ node.append(sanitizeHTMLToDom(content2));
+ };
+ $$self.$$set = ($$props2) => {
+ if ("content" in $$props2)
+ $$invalidate(0, content = $$props2.content);
+ };
+ return [content, html];
+}
+var HtmlTooltip = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance2, create_fragment2, safe_not_equal, { content: 0 });
+ }
+};
+var HtmlTooltip_default = HtmlTooltip;
+
+// src/modals/ItemModal.ts
+var import_obsidian10 = __toModule(require("obsidian"));
+
+// src/functions.ts
+var import_obsidian6 = __toModule(require("obsidian"));
+
+// src/modals/TextInputPrompt.ts
+var import_obsidian4 = __toModule(require("obsidian"));
+
+// src/modals/BaseModal.ts
+var import_obsidian3 = __toModule(require("obsidian"));
+var BaseModal = class extends import_obsidian3.Modal {
+ setValidationError(input, message) {
+ input.inputEl.addClass("is-invalid");
+ if (message) {
+ input.inputEl.parentElement.addClasses([
+ "has-invalid-message",
+ "unset-align-items"
+ ]);
+ input.inputEl.parentElement.parentElement.addClass(".unset-align-items");
+ let mDiv = input.inputEl.parentElement.querySelector(".invalid-feedback");
+ if (!mDiv) {
+ mDiv = createDiv({ cls: "invalid-feedback" });
+ }
+ mDiv.innerText = message;
+ mDiv.insertAfter(input.inputEl);
+ }
+ }
+ removeValidationError(input) {
+ input.inputEl.removeClass("is-invalid");
+ input.inputEl.parentElement.removeClasses([
+ "has-invalid-message",
+ "unset-align-items"
+ ]);
+ input.inputEl.parentElement.parentElement.removeClass(".unset-align-items");
+ if (input.inputEl.parentElement.querySelector(".invalid-feedback")) {
+ input.inputEl.parentElement.removeChild(input.inputEl.parentElement.querySelector(".invalid-feedback"));
+ }
+ }
+};
+
+// src/l10n/locales/en.ts
+var en_default = {
+ testingValue: "",
+ testingInserts: "",
+ RSS_Reader: "RSS Reader",
+ RSS_Feeds: "RSS Feeds",
+ open: "Open",
+ refresh_feeds: "Refresh feeds",
+ create_all: "Create all",
+ mark_all_as_read: "Mark all as read",
+ add_tags_to_all: "Add tags to all entries",
+ filtered_folders: "Filtered Folders",
+ folders: "Folders",
+ folder: "Folder",
+ feeds: "Feeds",
+ create_note: "create new note",
+ paste_to_note: "paste to current note",
+ copy_to_clipboard: "copy to clipboard",
+ open_browser: "open in browser",
+ edit_tags: "edit tags",
+ mark_as_read: "Mark as read",
+ mark_as_unread: "Mark as unread",
+ mark_as_favorite: "mark as favorite",
+ remove_from_favorites: "remove from favorites",
+ read_article_tts: "read article with TTS",
+ next: "next",
+ previous: "previous",
+ mark_as_read_unread: "mark as read/unread",
+ mark_as_favorite_remove: "mark as favorite/remove from favorites",
+ marked_as_read: "marked item as read",
+ marked_as_unread: "marked item as unread",
+ removed_from_favorites: "removed item from favorites",
+ added_to_favorites: "marked item as favorite",
+ read: "read",
+ unread: "unread",
+ favorites: "Favorites",
+ favorite: "Favorite",
+ tags: "Tags",
+ tag: "Tag",
+ save: "Save",
+ cancel: "Cancel",
+ delete: "Delete",
+ edit: "Edit",
+ reset: "restore default",
+ fix_errors: "Please fix errors before saving.",
+ add_new: "Add new",
+ add_new_feed: "Add new feed",
+ feed_already_configured: "you already have a feed configured with that url",
+ no_folder: "No folder",
+ name: "Name",
+ name_help: "What do you want this feed to show up as?",
+ url_help: "What is the URL to the feed?",
+ folder_help: "What do you categorize this feed as?",
+ invalid_name: "you need to specify a name",
+ invalid_url: "this url is not valid",
+ invalid_feed: "This feed does not have any entries",
+ filter_tags: "All articles with tags",
+ filter_unread: "All unread articles(from folders)",
+ filter_read: "All read articles(from folders)",
+ filter_favorites: "Favorites(from folders)",
+ sort_date_newest: "Publication date (new to old)",
+ sort_date_oldest: "Publication date (old to new)",
+ sort_alphabet_normal: "Name (A to Z)",
+ sort_alphabet_inverted: "Name (Z to A)",
+ sort: "Order by",
+ filter_name_help: "What do you want this filter to show up as?",
+ filter_type: "Type",
+ filter_type_help: "Type of filter",
+ filter: "Filter",
+ filter_help: "Folders/Tags to filter on, split by ,",
+ only_favorites: "Show only favorites",
+ show_read: "Show read",
+ show_unread: "Show unread",
+ filter_folder_help: "Only show articles from the following folders",
+ filter_feed_help: "Only show articles from the following feeds",
+ filter_tags_help: "Only show articles with the following tags",
+ from_folders: "from folders: ",
+ from_feeds: "from feeds: ",
+ with_tags: "with tags: ",
+ no_feed_with_name: "There is no feed with this name",
+ invalid_tag: "This is not a valid tag",
+ note_exists: "there is already a note with that name",
+ invalid_filename: "that filename is not valid",
+ specify_name: "Please specify a filename",
+ cannot_contain: "cannot contain:",
+ created_note: "Created note from article",
+ inserted_article: "inserted article into note",
+ no_file_active: "no file active",
+ settings: "Settings",
+ file_creation: "File creation",
+ template_new: "new file template",
+ template_new_help: "When creating a note from a article this gets processed.",
+ template_paste: "paste article template",
+ template_paste_help: "When pasting/copying an article this gets processed.",
+ available_variables: "Available variables are:",
+ file_location: "Default location for new notes",
+ file_location_help: "Where newly created notes are placed",
+ file_location_default: "In the default folder",
+ file_location_custom: "In the folder specified below",
+ file_location_folder: "Folder to create new articles in",
+ file_location_folder_help: "newly created articles will appear in this folder",
+ date_format: "Date format",
+ syntax_reference: "Syntax Reference",
+ syntax_looks: "Your current syntax looks like this: ",
+ ask_filename: "Ask for filename",
+ ask_filename_help: "Disable to apply the template below automatically(with invalid symbols removed)",
+ refresh_time: "Refresh time",
+ refresh_time_help: "How often should the feeds be refreshed, in minutes, use 0 to disable",
+ specify_positive_number: "please specify a positive number",
+ multi_device_usage: "Multi device usage",
+ multi_device_usage_help: "Keep article status synced when using multiple devices at the same time\n(Requires a restart to become effective)",
+ add_new_filter: "Add new filtered folder",
+ filter_exists: "you already have a filter configured with that name",
+ hotkeys: "Hotkeys",
+ hotkeys_reading: "when reading a article",
+ press_key: "press a key",
+ customize_hotkey: "customize this hotkey",
+ refreshed_feeds: "Feeds refreshed",
+ import: "Import",
+ import_opml: "Import from OPML",
+ imported_x_feeds: "Imported %1 feeds",
+ choose_file: "Choose file",
+ choose_file_help: "Choose file to import",
+ export_opml: "Export as OPML",
+ default_filename: "Template for filename",
+ default_filename_help: "All variables from the paste template are available",
+ cleanup: "Cleanup articles",
+ cleanup_help: "Removes entries which fit the criteria specified below.",
+ cleanup_help2: "Keep in mind that articles that still exist in the feed will reappear on the next refresh",
+ perform_cleanup: "Perform cleanup",
+ all: "all",
+ from_feed: "from feed",
+ older_than: "older than X Days",
+ older_than_help: "keep empty for all, will be ignored if there is no publishing date associated with entry",
+ advanced: "Advanced",
+ remove_wrong_feed: "Remove all articles that are in the incorrect feed",
+ remove_wrong_feed_help: "This might have happened due to a bug in versions pre 0.8",
+ scanning_items: "Scanning Articles (%1 / %2)",
+ created_export: "Created OPML file in your Vaults root folder",
+ add: "Add",
+ from_archive: "Get old articles from archive.org",
+ reading_archive: "Reading data from archive",
+ scanning_duplicates: "Scanning for duplicates",
+ do_not_close: "Please do not close this window",
+ display_style: "Display Style",
+ list: "List",
+ cards: "Cards",
+ customize_terms: "Customize Terms",
+ content: "Content",
+ highlight: "Highlight",
+ highlight_remove: "remove highlight",
+ filter_folder_ignore_help: "ignore the following folders",
+ filter_feed_ignore_help: "ignore the following feeds",
+ filter_tags_ignore_help: "ignore the following tags",
+ loading: "Loading",
+ article_title: "Title",
+ article_link: "Link to article",
+ article_author: "Author of article",
+ article_published: "Date published",
+ article_description: "Short article description",
+ article_content: "article content",
+ article_tags: "Tags split by comma",
+ article_media: "Link to video/audio file",
+ feed_folder: "Folder of feed",
+ feed_title: "Title of feed",
+ highlights: "Highlights",
+ note_created: "Note creation date",
+ filename: "Filename",
+ display_media: "Include Media",
+ base_folder: "Base folder"
+};
+
+// src/l10n/locales/de.ts
+var de_default = {
+ RSS_Reader: "RSS Reader",
+ RSS_Feeds: "RSS Feeds",
+ open: "\xD6ffnen",
+ refresh_feeds: "Feeds neu laden",
+ create_all: "Alle erstellen",
+ mark_all_as_read: "Alle als gelesen markieren",
+ add_tags_to_all: "Tags zu allen hinzuf\xFCgen",
+ filtered_folders: "Gefilterte Ordner",
+ folders: "Ordner",
+ folder: "Ordner",
+ feeds: "Feeds",
+ create_note: "Neue Notiz erstellen",
+ paste_to_note: "In aktuelle Notiz einf\xFCgen",
+ copy_to_clipboard: "In die Zwischenablage kopieren",
+ open_browser: "Im Webbrowser \xF6ffnen",
+ edit_tags: "Tags bearbeiten",
+ mark_as_read: "Als gelesen markieren",
+ mark_as_unread: "Als ungelesen markieren",
+ mark_as_favorite: "As Favorit markieren",
+ remove_from_favorites: "Aus den Favoriten entfernen",
+ read_article_tts: "Vorlesen",
+ next: "n\xE4chster",
+ previous: "vorheriger",
+ mark_as_read_unread: "Als gelesen/ungelesen markieren",
+ mark_as_favorite_remove: "Als Favorit markieren/Aus den Favoriten entfernen",
+ marked_as_read: "Als gelesen markiert",
+ marked_as_unread: "Als ungelesen markiert",
+ removed_from_favorites: "Von den Favoriten entfernt",
+ added_to_favorites: "Als Favorit markiert",
+ read: "gelesen",
+ unread: "ungelesen",
+ favorites: "Favoriten",
+ favorite: "Favorit",
+ tags: "Tags",
+ tag: "Tag",
+ save: "Speichern",
+ cancel: "Abbrechen",
+ delete: "L\xF6schen",
+ edit: "Bearbeiten",
+ reset: "zur\xFCcksetzen",
+ fix_errors: "Bitte behebe die Fehler vor dem speichern.",
+ add_new: "neu hinzuf\xFCgen",
+ add_new_feed: "neuen Feed hinzuf\xFCgen",
+ feed_already_configured: "Es existiert bereits ein Feed mit dieser URL",
+ no_folder: "Kein Ordner",
+ name: "Name",
+ name_help: "Unter welchem Namen soll dieser Feed angezeigt werden?",
+ url_help: "Wie lautet die URL zu diesem Feed?",
+ folder_help: "Als was kategorisierst du diesen Feed?",
+ invalid_name: "Du must einen g\xFCltigen Namen vergeben",
+ invalid_url: "diese URL ist nicht g\xFCltig",
+ invalid_feed: "Dieser Feed hat keine Eintr\xE4ge",
+ filter_tags: "Alle Artikel mit Tags",
+ filter_unread: "Alle ungelesenen Artikel(aus Ordnern)",
+ filter_read: "Alle gelesenen Artikel(aus Ordnern)",
+ filter_favorites: "Favoriten(aus Ordnern)",
+ sort_date_newest: "Ver\xF6ffentlichungsdatum (neu - alt)",
+ sort_date_oldest: "Ver\xF6ffentlichungsdatum (alt - neu)",
+ sort_alphabet_normal: "Name (A - Z)",
+ sort_alphabet_inverted: "Name (Z - A)",
+ sort: "Ordnen nach",
+ filter_name_help: "Wie soll der Filter angezeigt werden?",
+ filter_type: "Typ",
+ filter_type_help: "Typ des Filters",
+ filter: "Filter",
+ filter_help: "Order/Tags die gefiltert werden sollen, getrennt durch ,",
+ only_favorites: "Zeige nur Favoriten",
+ show_read: "Zeige gelesene",
+ show_unread: "Zeige ungelesene",
+ filter_folder_help: "Zeige nur Artikel aus den folgenden Ordnern",
+ filter_feed_help: "Zeige nur Artikel aus den folgenden Feeds",
+ filter_tags_help: "Zeige nur Artikel mit den folgenden Tags",
+ from_folders: "Aus Ordnern: ",
+ from_feeds: "Aus Feeds: ",
+ with_tags: "Mit Tags: ",
+ no_feed_with_name: "Es existiert kein Feed mit diesem Namen",
+ invalid_tag: "Dieser Tag ist nicht g\xFCltig",
+ note_exists: "Es existiert bereits eine Notiz mit diesem Namen",
+ invalid_filename: "Der Dateiname ist nicht g\xFCltig",
+ specify_name: "Bitte einen Dateinamen angeben",
+ cannot_contain: "kann nicht enhalten:",
+ created_note: "Notiz erstellt",
+ inserted_article: "in Notiz eingef\xFCgt",
+ no_file_active: "Keine Datei ge\xF6ffnet",
+ settings: "Einstellungen",
+ file_creation: "Dateierstellung",
+ template_new: "Vorlage f\xFCr neue Dateien",
+ template_new_help: "Beim erstellen einer Notiz wird dies verarbeitet.",
+ template_paste: "Vorlage beim Einf\xFCgen in eine Datei",
+ template_paste_help: "Beim einf\xFCgen/in die Zwischenablage kopieren wird dies verarbeitet.",
+ available_variables: "M\xF6gliche Variablen sind:",
+ file_location: "Speicherort f\xFCr neue Notizen",
+ file_location_help: "Wo sollen neue Notizen gespeichert werden?",
+ file_location_default: "In Standardordner",
+ file_location_custom: "Eigenen Ordner festlegen",
+ file_location_folder: "Ordner f\xFCr neue Notizen",
+ file_location_folder_help: "Speichert neue Notizen an diesem Ort",
+ date_format: "Datumsformat",
+ syntax_reference: "Syntax Referenz",
+ syntax_looks: "So wird es aussehen: ",
+ ask_filename: "Nach Dateiname fragen",
+ ask_filename_help: "Deaktivieren um die Vorlage automatisch anzuwenden(ohne ung\xFCltige Zeichen)",
+ refresh_time: "Aktualisierungsintervall",
+ refresh_time_help: "Wie h\xE4ufig soll auf neue Eintr\xE4ge \xFCberpr\xFCft werden(in Minuten), 0 zu deaktivieren",
+ specify_positive_number: "Bitte eine positive Zahl angeben",
+ multi_device_usage: "Mit mehreren Ger\xE4ten nutzen",
+ multi_device_usage_help: "Syncronisiere Lesestatus & Tags zwischen mehreren gleichzeitig genutzten Ger\xE4ten\n(Ben\xF6tigt einen Neustart der App)",
+ add_new_filter: "Neuen gefilterten Ordner erstellen",
+ filter_exists: "Es exisitiert bereits ein Feed mit diesem Namen",
+ hotkeys: "Tastenk\xFCrzel",
+ hotkeys_reading: "in der Leseansicht",
+ press_key: "dr\xFCcke eine Taste",
+ customize_hotkey: "dieses Tastenk\xFCrzel anpassen",
+ refreshed_feeds: "Feeds aktualisiert",
+ import: "Importieren",
+ import_opml: "Aus OPML importieren",
+ imported_x_feeds: "%1 Feeds importiert",
+ choose_file: "Datei ausw\xE4hlen",
+ choose_file_help: "W\xE4hle eine Datei aus der importiert werden soll",
+ export_opml: "Als OPML exportieren",
+ default_filename: "Vorlage f\xFCr Dateinamen",
+ default_filename_help: "Alle Variablen aus der einf\xFCgen Vorlage k\xF6nnen verwendet werden",
+ cleanup: "Artikel aufr\xE4umen",
+ cleanup_help: "Entfernt alle Artikel auf die folgende Kriterien zutreffen",
+ cleanup_help2: "Alle Artikel die noch im Feed vorhanden sind werden beim n\xE4chsten aktualisieren wieder erscheinen",
+ perform_cleanup: "ausf\xFChren",
+ all: "Alle",
+ from_feed: "von Feed",
+ older_than: "\xE4lter als X Tage",
+ older_than_help: "Leerlassen f\xFCr alle, wird ignoriert wenn Artikel kein Ver\xF6ffentlichungsdatum hat",
+ advanced: "Erweitert",
+ remove_wrong_feed: "Alle Artikel entfernen die im falschen Feed gelandet sind",
+ remove_wrong_feed_help: "Aufgrund eines Fehlers in Versionen vor 0.8 k\xF6nnte dies passiert sein",
+ scanning_items: "Verarbeite Artikel (%1 / %2)",
+ created_export: "OPML Export in Vault erstellt",
+ add: "Hinzuf\xFCgen",
+ from_archive: "Alte Artikel von archive.org lesen",
+ reading_archive: "Daten werden aus Archiv geladen",
+ scanning_duplicates: "Entferne Duplikate",
+ do_not_close: "Bitte dieses Fenster nicht schliesen",
+ display_style: "Anzeige",
+ list: "List",
+ cards: "Karten",
+ customize_terms: "Begriffe anpassen",
+ content: "Inhalt",
+ highlight: "Markieren",
+ highlight_remove: "Markierung entfernen",
+ filter_folder_ignore_help: "diese Ordner ignorieren",
+ filter_feed_ignore_help: "diese Feeds ignorieren",
+ filter_tags_ignore_help: "diese Tags ignorieren",
+ loading: "L\xE4dt",
+ article_title: "Titel",
+ article_link: "Link zum Artikel",
+ article_author: "Autor",
+ article_published: "Ver\xF6ffentlichungsdatum",
+ article_description: "Kurze Beschreibung des Artikels",
+ article_content: "Inhalt des Artikels",
+ article_tags: "Tags getrennt durch Komma",
+ article_media: "Link zu Video/Audio Datei",
+ feed_folder: "Ordner des Feeds",
+ feed_title: "Feed Titel",
+ highlights: "Highlights",
+ note_created: "Erstelldatum der Notiz",
+ filename: "Dateiname"
+};
+
+// src/l10n/locales/zh.ts
+var zh_default = {
+ RSS_Reader: "RSS Reader",
+ RSS_Feeds: "\u8BA2\u9605\u6E90",
+ open: "\u6253\u5F00",
+ refresh_feeds: "\u66F4\u65B0\u8BA2\u9605",
+ create_all: "\u521B\u5EFA\u5168\u90E8",
+ mark_all_as_read: "\u5168\u90E8\u6807\u8BB0\u4E3A\u5DF2\u8BFB",
+ add_tags_to_all: "\u4E3A\u6240\u6709\u6761\u76EE\u6DFB\u52A0\u6807\u7B7E",
+ filtered_folders: "\u7B5B\u9009\u5206\u7C7B",
+ folders: "\u5206\u7C7B",
+ folder: "\u5206\u7C7B",
+ feeds: "\u8BA2\u9605\u6E90",
+ create_note: "\u65B0\u5EFA\u7B14\u8BB0",
+ paste_to_note: "\u7C98\u8D34\u5230\u5F53\u524D\u7B14\u8BB0",
+ copy_to_clipboard: "\u590D\u5236\u5230\u526A\u5207\u677F",
+ open_browser: "\u7528\u6D4F\u89C8\u5668\u6253\u5F00",
+ edit_tags: "\u7F16\u8F91\u6807\u7B7E",
+ mark_as_read: "\u6807\u8BB0\u4E3A\u5DF2\u8BFB",
+ mark_as_unread: "\u6807\u8BB0\u4E3A\u672A\u8BFB",
+ mark_as_favorite: "\u6DFB\u52A0\u5230\u6536\u85CF\u5939",
+ remove_from_favorites: "\u4ECE\u6536\u85CF\u5939\u4E2D\u5220\u9664",
+ read_article_tts: "\u8BED\u97F3(TTS)\u9605\u8BFB\u6587\u7AE0",
+ next: "\u4E0B\u4E00\u7BC7",
+ previous: "\u4E0A\u4E00\u7BC7",
+ mark_as_read_unread: "\u6807\u8BB0\u4E3A\u5DF2\u8BFB/\u672A\u8BFB",
+ mark_as_favorite_remove: "\u6DFB\u52A0\u5230\u6536\u85CF\u5939/\u4ECE\u6536\u85CF\u5939\u4E2D\u5220\u9664",
+ marked_as_read: "\u5DF2\u6807\u8BB0\u4E3A\u5DF2\u8BFB",
+ marked_as_unread: "\u5DF2\u6807\u8BB0\u4E3A\u672A\u8BFB",
+ removed_from_favorites: "\u5DF2\u4ECE\u6536\u85CF\u5939\u4E2D\u5220\u9664",
+ added_to_favorites: "\u5DF2\u6DFB\u52A0\u5230\u6536\u85CF\u5939",
+ read: "\u5DF2\u8BFB",
+ unread: "\u672A\u8BFB",
+ favorites: "\u6536\u85CF\u5939",
+ favorite: "\u6536\u85CF",
+ tags: "\u6807\u7B7E",
+ tag: "\u6807\u7B7E",
+ save: "\u4FDD\u5B58",
+ cancel: "\u53D6\u6D88",
+ delete: "\u5220\u9664",
+ edit: "\u7F16\u8F91",
+ reset: "\u6062\u590D\u9ED8\u8BA4\u503C",
+ fix_errors: "\u8BF7\u5728\u4FDD\u5B58\u524D\u4FEE\u590D\u9519\u8BEF\u3002",
+ add_new: "\u6DFB\u52A0",
+ add_new_feed: "\u6DFB\u52A0\u65B0\u8BA2\u9605\u6E90",
+ feed_already_configured: "\u60A8\u5DF2\u7ECF\u6DFB\u52A0\u4E86\u8BE5 URL \u5730\u5740\u7684\u8BA2\u9605\u6E90",
+ no_folder: "\u672A\u5206\u7C7B",
+ name: "\u540D\u79F0",
+ name_help: "\u8BBE\u7F6E\u8BA2\u9605\u6E90\u540D\u79F0",
+ url_help: "\u8F93\u5165\u8BA2\u9605\u6E90\u7684 URL \u5730\u5740",
+ folder_help: "\u8BBE\u7F6E\u8BA2\u9605\u6E90\u5206\u7C7B",
+ invalid_name: "\u8BF7\u8F93\u5165\u8BA2\u9605\u6E90\u540D\u79F0",
+ invalid_url: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u8BA2\u9605\u6E90 URL \u5730\u5740",
+ invalid_feed: "\u6B64\u8BA2\u9605\u6E90\u6CA1\u6709\u4EFB\u4F55\u5185\u5BB9",
+ filter_tags: "\u5DF2\u6253\u6807\u7B7E\u7684\u6587\u7AE0",
+ filter_unread: "\u5168\u90E8\u672A\u8BFB\u6587\u7AE0(\u6765\u81EA\u5206\u7C7B)",
+ filter_read: "\u5168\u90E8\u5DF2\u8BFB\u6587\u7AE0(\u6765\u81EA\u5206\u7C7B)",
+ filter_favorites: "\u6536\u85CF\u5939(\u6765\u81EA\u5206\u7C7B)",
+ sort_date_newest: "\u53D1\u5E03\u65E5\u671F (\u65B0 \u2192 \u65E7)",
+ sort_date_oldest: "\u53D1\u5E03\u65E5\u671F (\u65E7 to \u65B0)",
+ sort_alphabet_normal: "\u540D\u79F0 (A \u2192 Z)",
+ sort_alphabet_inverted: "\u540D\u79F0 (Z \u2192 A)",
+ sort: "\u6392\u5E8F",
+ filter_name_help: "\u8BBE\u7F6E\u7B5B\u9009\u5668\u540D\u79F0",
+ filter_type: "\u7C7B\u578B",
+ filter_type_help: "\u7B5B\u9009\u5668\u7C7B\u578B",
+ filter: "\u7B5B\u9009\u5668",
+ filter_help: "\u8981\u7B5B\u9009\u7684\u5206\u7C7B/\u6807\u7B7E,",
+ only_favorites: "\u4EC5\u663E\u793A\u5DF2\u6536\u85CF",
+ show_read: "\u663E\u793A\u5DF2\u8BFB",
+ show_unread: "\u663E\u793A\u672A\u8BFB",
+ filter_folder_help: "\u4EC5\u663E\u793A\u4EE5\u4E0B\u5206\u7C7B\u4E2D\u7684\u6587\u7AE0",
+ filter_feed_help: "\u4EC5\u663E\u793A\u4EE5\u4E0B\u8BA2\u9605\u6E90\u4E2D\u7684\u6587\u7AE0",
+ filter_tags_help: "\u4EC5\u663E\u793A\u4EE5\u4E0B\u6807\u7B7E\u4E2D\u7684\u6587\u7AE0",
+ from_folders: "\u6765\u81EA\u5206\u7C7B: ",
+ from_feeds: "\u6765\u81EA\u8BA2\u9605\u6E90: ",
+ with_tags: "\u6765\u81EA\u6807\u7B7E: ",
+ invalid_tag: "\u6B64\u6807\u7B7E\u65E0\u6548",
+ note_exists: "\u5DF2\u5B58\u5728\u540C\u540D\u7B14\u8BB0",
+ invalid_filename: "\u6587\u4EF6\u540D\u65E0\u6548",
+ specify_name: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D",
+ cannot_contain: "\u4E0D\u80FD\u5305\u542B: ",
+ created_note: "\u5DF2\u5C06\u8BE5\u6587\u7AE0\u590D\u5236\u4E3A\u7B14\u8BB0",
+ inserted_article: "\u5DF2\u5C06\u8BE5\u6587\u7AE0\u590D\u5236\u5230\u5F53\u524D\u7B14\u8BB0",
+ no_file_active: "\u6CA1\u6709\u6587\u4EF6\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001",
+ settings: "\u8BBE\u7F6E",
+ file_creation: "\u65B0\u5EFA\u7B14\u8BB0",
+ template_new: "\u7B14\u8BB0\u6A21\u677F",
+ template_new_help: "\u4F7F\u7528\u8BA2\u9605\u6587\u7AE0\u521B\u5EFA\u7B14\u8BB0\u65F6\uFF0C\u4F1A\u6839\u636E\u5DF2\u8BBE\u7F6E\u7684\u6A21\u677F\u53D8\u91CF\u8FDB\u884C\u5904\u7406\u3002",
+ template_paste: "\u590D\u5236/\u7C98\u8D34\u6A21\u677F",
+ template_paste_help: "\u5C06\u8BA2\u9605\u6587\u7AE0\u590D\u5236/\u7C98\u8D34\u4E3A\u7B14\u8BB0\u65F6\uFF0C\u4F1A\u6839\u636E\u5DF2\u8BBE\u7F6E\u7684\u6A21\u677F\u53D8\u91CF\u8FDB\u884C\u5904\u7406\u3002",
+ available_variables: "\u53EF\u7528\u6A21\u677F\u53D8\u91CF: ",
+ file_location: "\u4FDD\u5B58\u4F4D\u7F6E",
+ file_location_help: "\u8BF7\u9009\u62E9\u8981\u4FDD\u5B58\u65B0\u5EFA\u7B14\u8BB0\u7684\u4F4D\u7F6E",
+ file_location_default: "\u9ED8\u8BA4\u76EE\u5F55",
+ file_location_custom: "\u81EA\u5B9A\u4E49\u76EE\u5F55",
+ file_location_folder: "\u8BF7\u9009\u62E9\u8981\u4FDD\u5B58\u65B0\u5EFA\u7B14\u8BB0\u7684\u76EE\u5F55",
+ file_location_folder_help: "\u65B0\u521B\u5EFA\u7684\u7B14\u8BB0\u5C06\u4FDD\u5B58\u5728\u8BE5\u76EE\u5F55\u4E2D",
+ date_format: "\u65E5\u671F\u683C\u5F0F",
+ syntax_reference: "\u65E5\u671F\u683C\u5F0F\u8BED\u6CD5\u53C2\u8003",
+ syntax_looks: "\u5F53\u524D\u65E5\u671F\u683C\u5F0F: ",
+ ask_filename: "\u786E\u8BA4\u6587\u4EF6\u540D",
+ ask_filename_help: "\u7981\u7528\u5219\u81EA\u52A8\u4F7F\u7528\u4E0B\u9762\u7684\u6587\u4EF6\u540D\u6A21\u677F\u521B\u5EFA\u6587\u4EF6\uFF08\u81EA\u52A8\u5220\u9664\u65E0\u6548\u7684\u6587\u4EF6\u540D\u5B57\u7B26\uFF09",
+ refresh_time: "\u66F4\u65B0\u9891\u7387",
+ refresh_time_help: "\u591A\u4E45\u66F4\u65B0\u4E00\u6B21\u8BA2\u9605\u6E90\uFF08\u5355\u4F4D: \u5206\u949F\uFF09\uFF0C\u8BBE\u7F6E\u4E3A0\u5219\u7981\u7528\u3002",
+ specify_positive_number: "\u8BF7\u8F93\u5165\u6B63\u6570",
+ multi_device_usage: "\u591A\u8BBE\u5907\u4F7F\u7528",
+ multi_device_usage_help: "\u540C\u65F6\u4F7F\u7528\u591A\u4E2A\u8BBE\u5907\u65F6\u4FDD\u6301\u6587\u7AE0\u72B6\u6001\u540C\u6B65\n(\u9700\u8981\u91CD\u65B0\u542F\u52A8\u624D\u80FD\u751F\u6548)",
+ add_new_filter: "\u6DFB\u52A0\u65B0\u7B5B\u9009\u5668",
+ filter_exists: "\u5DF2\u5B58\u5728\u540C\u540D\u7B5B\u9009\u5668",
+ hotkeys: "\u5FEB\u6377\u952E",
+ hotkeys_reading: "\u9605\u8BFB\u6587\u7AE0\u65F6",
+ press_key: "\u6309\u4E0B\u5FEB\u6377\u952E",
+ customize_hotkey: "\u5206\u914D\u5FEB\u6377\u952E",
+ refreshed_feeds: "\u5DF2\u66F4\u65B0 RSS \u8BA2\u9605\u6E90",
+ import: "\u5BFC\u5165",
+ import_opml: "\u901A\u8FC7 OPML \u5BFC\u5165",
+ imported_x_feeds: "\u5DF2\u5BFC\u5165 %1 \u6761\u8BA2\u9605\u6E90",
+ choose_file: "\u9009\u62E9\u6587\u4EF6",
+ choose_file_help: "\u8BF7\u9009\u62E9\u8981\u5BFC\u5165\u7684\u6587\u4EF6",
+ export_opml: "\u5BFC\u51FA OPML \u6587\u4EF6",
+ default_filename: "\u6587\u4EF6\u540D\u6A21\u677F",
+ default_filename_help: "\u4E0A\u9762\u521B\u5EFA\u7B14\u8BB0\u7684\u6240\u6709\u6A21\u677F\u53D8\u91CF\u90FD\u53EF\u7528",
+ cleanup: "\u6E05\u9664\u6587\u7AE0",
+ cleanup_help: "\u6E05\u9664\u7B26\u5408\u4EE5\u4E0B\u89C4\u5219\u7684\u6587\u7AE0",
+ cleanup_help2: "\u6CE8\u610F\uFF0C\u8BA2\u9605\u6E90\u4E2D\u4ECD\u5B58\u5728\u7684\u6587\u7AE0\u5C06\u5728\u4E0B\u6B21\u5237\u65B0\u65F6\u91CD\u65B0\u51FA\u73B0",
+ perform_cleanup: "\u6E05\u9664\u6587\u7AE0",
+ all: "\u5168\u90E8",
+ from_feed: "\u6765\u81EA\u8BA2\u9605\u6E90",
+ older_than: "\u591A\u5C11\u5929\u4E4B\u524D\u53D1\u5E03\u7684\u6587\u7AE0",
+ older_than_help: "\u5982\u679C\u6CA1\u6709\u7B26\u5408\u7684\u6587\u7AE0\uFF0C\u5219\u5FFD\u7565\u8BE5\u6761\u89C4\u5219\uFF08\u4E3A\u7A7A\u5219\u4FDD\u7559\u6240\u6709\u65E5\u671F\u7684\u6587\u7AE0\uFF09",
+ advanced: "\u9AD8\u7EA7\u8BBE\u7F6E",
+ remove_wrong_feed: "\u6E05\u9664\u6240\u6709\u4E0D\u6B63\u786E\u8BA2\u9605\u6E90\u4E2D\u7684\u6587\u7AE0",
+ remove_wrong_feed_help: "\u8FD9\u53EF\u80FD\u662F\u7531\u4E8E0.8\u4E4B\u524D\u7248\u672C\u4E2D\u7684\u9519\u8BEF\u9020\u6210\u7684",
+ scanning_items: "\u626B\u63CF\u6587\u7AE0 (%1 / %2))",
+ created_export: "\u5DF2\u5728\u7B14\u8BB0\u4ED3\u5E93\u6839\u76EE\u5F55\u521B\u5EFA OPML \u6587\u4EF6",
+ add: "\u6DFB\u52A0",
+ from_archive: "\u4ECE\u4E92\u8054\u7F51\u6863\u6848\u9986(archive.org)\u83B7\u53D6\u65E7\u6587\u7AE0",
+ reading_archive: "\u6B63\u5728\u4ECE\u5B58\u6863\u4E2D\u8BFB\u53D6\u6570\u636E",
+ scanning_duplicates: "\u626B\u63CF\u91CD\u590D\u6587\u7AE0",
+ do_not_close: "\u8BF7\u52FF\u5173\u95ED\u6B64\u7A97\u53E3",
+ display_style: "\u663E\u793A\u98CE\u683C",
+ list: "\u5217\u8868",
+ cards: "\u5361\u7247",
+ customize_terms: "\u81EA\u5B9A\u4E49\u672F\u8BED",
+ content: "\u5185\u5BB9\u8BBE\u7F6E",
+ highlight: "\u9AD8\u4EAE",
+ highlight_remove: "\u5220\u9664\u9AD8\u4EAE",
+ filter_folder_ignore_help: "\u5FFD\u7565\u4EE5\u4E0B\u5206\u7C7B",
+ filter_feed_ignore_help: "\u5FFD\u7565\u4EE5\u4E0B\u8BA2\u9605\u6E90",
+ filter_tags_ignore_help: "\u5FFD\u7565\u4EE5\u4E0B\u6807\u7B7E",
+ loading: "\u6B63\u5728\u52A0\u8F7D"
+};
+
+// src/l10n/locales/test.ts
+var test_default = {
+ "testingValue": "Hello World",
+ testingInserts: "Hello %1 %2"
+};
+
+// src/l10n/locale.ts
+var locale = window.moment ? window.moment.locale() : "test";
+var localeMap = {
+ en: en_default,
+ de: de_default,
+ "zh-cn": zh_default,
+ test: test_default
+};
+var userLocale = localeMap[locale];
+function t(str, ...inserts) {
+ var _a;
+ let localeStr = (_a = userLocale && userLocale[str]) != null ? _a : en_default[str];
+ for (let i = 0; i < inserts.length; i++) {
+ localeStr = localeStr.replace(`%${i + 1}`, inserts[i]);
+ }
+ return localeStr;
+}
+
+// src/modals/TextInputPrompt.ts
+var TextInputPrompt = class extends BaseModal {
+ constructor(app, promptText, hint, defaultValue, placeholder, buttonText = t("save")) {
+ super(app);
+ this.promptText = promptText;
+ this.hint = hint;
+ this.defaultValue = defaultValue;
+ this.placeholder = placeholder;
+ this.buttonText = buttonText;
+ }
+ onOpen() {
+ this.titleEl.setText(this.promptText);
+ this.createForm();
+ }
+ onClose() {
+ this.contentEl.empty();
+ }
+ createForm() {
+ const div = this.contentEl.createDiv();
+ const text2 = new import_obsidian4.Setting(div).setName(this.promptText).setDesc(this.hint).addText((textComponent) => {
+ textComponent.setValue(this.defaultValue).setPlaceholder(this.placeholder).onChange(() => {
+ this.removeValidationError(textComponent);
+ }).inputEl.setAttribute("size", "50");
+ this.textComponent = textComponent;
+ });
+ text2.controlEl.addClass("rss-setting-input");
+ new import_obsidian4.Setting(div).addButton((b) => {
+ b.setButtonText(this.buttonText).onClick(() => __async(this, null, function* () {
+ this.resolve(this.textComponent);
+ }));
+ return b;
+ });
+ }
+ openAndGetValue(resolve) {
+ return __async(this, null, function* () {
+ this.resolve = resolve;
+ yield this.open();
+ });
+ }
+};
+
+// node_modules/obsidian-community-lib/dist/utils.js
+var feather = __toModule(require_feather());
+var import_obsidian5 = __toModule(require("obsidian"));
+function copy(content, success = () => new import_obsidian5.Notice("Copied to clipboard"), failure = (reason) => {
+ new import_obsidian5.Notice("Could not copy to clipboard");
+ console.log({ reason });
+}) {
+ return __async(this, null, function* () {
+ yield navigator.clipboard.writeText(content).then(success, failure);
+ });
+}
+var isInVault = (app, noteName, sourcePath = "") => !!app.metadataCache.getFirstLinkpathDest(noteName, sourcePath);
+
+// src/functions.ts
+function createNewNote(plugin, item) {
+ return __async(this, null, function* () {
+ const activeFile = plugin.app.workspace.getActiveFile();
+ let dir = plugin.app.fileManager.getNewFileParent(activeFile ? activeFile.path : "").path;
+ if (plugin.settings.saveLocation === "custom") {
+ dir = plugin.settings.saveLocationFolder;
+ }
+ let filename = applyTemplate(plugin, item, plugin.settings.defaultFilename);
+ filename = filename.replace(/[\/\\:]/g, " ");
+ if (plugin.settings.askForFilename) {
+ const inputPrompt = new TextInputPrompt(plugin.app, t("specify_name"), t("cannot_contain") + ' * " \\ / < > : | ?', filename, filename);
+ yield inputPrompt.openAndGetValue((text2) => __async(this, null, function* () {
+ const value = text2.getValue();
+ if (value.match(FILE_NAME_REGEX)) {
+ inputPrompt.setValidationError(text2, t("invalid_filename"));
+ return;
+ }
+ const filePath = (0, import_obsidian6.normalizePath)([dir, `${value}.md`].join("/"));
+ if (isInVault(plugin.app, filePath, "")) {
+ inputPrompt.setValidationError(text2, t("note_exists"));
+ return;
+ }
+ inputPrompt.close();
+ yield createNewFile(plugin, item, filePath, value);
+ }));
+ } else {
+ const replacedTitle = filename.replace(FILE_NAME_REGEX, "");
+ const filePath = (0, import_obsidian6.normalizePath)([dir, `${replacedTitle}.md`].join("/"));
+ yield createNewFile(plugin, item, filePath, item.title);
+ }
+ });
+}
+function createNewFile(plugin, item, path, title) {
+ return __async(this, null, function* () {
+ if (isInVault(plugin.app, path, "")) {
+ new import_obsidian6.Notice(t("note_exists"));
+ return;
+ }
+ const appliedTemplate = applyTemplate(plugin, item, plugin.settings.template, title);
+ const file = yield plugin.app.vault.create(path, appliedTemplate);
+ yield plugin.app.workspace.activeLeaf.openFile(file, {
+ state: { mode: "edit" }
+ });
+ item.created = true;
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ new import_obsidian6.Notice(t("created_note"));
+ });
+}
+function pasteToNote(plugin, item) {
+ return __async(this, null, function* () {
+ const file = plugin.app.workspace.getActiveFile();
+ if (file === null) {
+ new import_obsidian6.Notice(t("no_file_active"));
+ return;
+ }
+ const view = plugin.app.workspace.getActiveViewOfType(import_obsidian6.MarkdownView);
+ if (view) {
+ const appliedTemplate = applyTemplate(plugin, item, plugin.settings.pasteTemplate);
+ const editor = view.editor;
+ editor.replaceRange(appliedTemplate, editor.getCursor());
+ item.created = true;
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ new import_obsidian6.Notice(t("RSS_Reader") + t("inserted_article"));
+ }
+ });
+}
+function applyTemplate(plugin, item, template, filename) {
+ let result = template.replace(/{{title}}/g, item.title);
+ result = result.replace(/{{link}}/g, item.link);
+ result = result.replace(/{{author}}/g, item.creator);
+ result = result.replace(/{{published}}/g, (0, import_obsidian6.moment)(item.pubDate).format(plugin.settings.dateFormat));
+ result = result.replace(/{{created}}/g, (0, import_obsidian6.moment)().format(plugin.settings.dateFormat));
+ result = result.replace(/{{date}}/g, (0, import_obsidian6.moment)().format(plugin.settings.dateFormat));
+ result = result.replace(/{{feed}}/g, item.feed);
+ result = result.replace(/{{folder}}/g, item.folder);
+ result = result.replace(/{{description}}/g, item.description);
+ result = result.replace(/{{media}}/g, item.enclosure);
+ result = result.replace(/({{published:).*(}})/g, function(k) {
+ const value = k.split(":")[1];
+ const format2 = value.substring(0, value.indexOf("}"));
+ return (0, import_obsidian6.moment)(item.pubDate).format(format2);
+ });
+ result = result.replace(/({{created:).*(}})/g, function(k) {
+ const value = k.split(":")[1];
+ const format2 = value.substring(0, value.indexOf("}"));
+ return (0, import_obsidian6.moment)().format(format2);
+ });
+ result = result.replace(/({{tags:).*(}})/g, function(k) {
+ const value = k.split(":")[1];
+ const separator = value.substring(0, value.indexOf("}"));
+ return item.tags.join(separator);
+ });
+ result = result.replace(/({{#tags:).*(}})/g, function(k) {
+ const value = k.split(":")[1];
+ const separator = value.substring(0, value.indexOf("}"));
+ return item.tags.map((i) => "#" + i).join(separator);
+ });
+ result = result.replace(/{{tags}}/g, item.tags.join(", "));
+ result = result.replace(/{{#tags}}/g, item.tags.map((i) => "#" + i).join(", "));
+ result = result.replace(/{{highlights}}/g, item.highlights.map((value) => {
+ return "- " + rssToMd(plugin, removeFormatting(value).replace(/^(-+)/, ""));
+ }).join("\n"));
+ result = result.replace(/({{highlights:)[\s\S][^}]*(}})/g, function(k) {
+ const value = k.split(/(:[\s\S]?)/);
+ const tmp = value.slice(1).join("");
+ const template2 = tmp.substring(1, tmp.indexOf("}"));
+ return item.highlights.map((i) => {
+ return template2.replace(/%%highlight%%/g, rssToMd(plugin, removeFormatting(i)).replace(/^(-+)/, ""));
+ }).join("");
+ });
+ if (filename) {
+ result = result.replace(/{{filename}}/g, filename);
+ }
+ let content = rssToMd(plugin, item.content);
+ item.highlights.forEach((highlight) => {
+ const mdHighlight = (0, import_obsidian6.htmlToMarkdown)(highlight);
+ content = content.replace(mdHighlight, "==" + mdHighlight + "==");
+ });
+ content = content.replace(/\$/g, "$$$");
+ result = result.replace(/{{content}}/g, content);
+ return result;
+}
+function removeFormatting(html) {
+ const doc = new DOMParser().parseFromString(html, "text/html");
+ const elements = doc.querySelectorAll("html body a");
+ for (let i = 0; i < elements.length; i++) {
+ const el = elements.item(i);
+ if (el.dataset) {
+ Object.keys(el.dataset).forEach((key) => {
+ delete el.dataset[key];
+ });
+ }
+ }
+ const objects = doc.querySelectorAll("object");
+ for (let i = 0; i < objects.length; i++) {
+ const object = objects.item(i);
+ object.remove();
+ }
+ return doc.documentElement.innerHTML;
+}
+function openInBrowser(item) {
+ if (typeof item.link === "string") {
+ window.open(item.link, "_blank");
+ }
+}
+function rssToMd(plugin, content) {
+ let markdown = (0, import_obsidian6.htmlToMarkdown)(content);
+ if (plugin.app.plugins.plugins["dataview"]) {
+ const {
+ inlineQueryPrefix,
+ inlineJsQueryPrefix
+ } = plugin.app.plugins.plugins.dataview.api.settings;
+ markdown = markdown.replace(RegExp(`\`${escapeRegExp(inlineQueryPrefix)}.*\``, "g"), "
$&
");
+ markdown = markdown.replace(RegExp(`\`${escapeRegExp(inlineJsQueryPrefix)}.*\``, "g"), "$&
");
+ }
+ if (plugin.app.plugins.plugins["templater-obsidian"]) {
+ markdown = markdown.replace(/<%([\s\S]*?)%>/g, "```javascript\n$&\n```");
+ }
+ if (import_obsidian6.MarkdownPreviewRenderer.codeBlockPostProcessors) {
+ const codeblockProcessors = Object.keys(import_obsidian6.MarkdownPreviewRenderer.codeBlockPostProcessors);
+ for (const codeblockProcessor of codeblockProcessors) {
+ const regex = RegExp("^```" + codeblockProcessor + "[\\s\\S]*?```$", "gm");
+ markdown = markdown.replace(regex, "$&
");
+ }
+ } else {
+ markdown = markdown.replace(/^```.*\n([\s\S]*?)```$/gm, "$&
");
+ }
+ if (!plugin.settings.displayMedia) {
+ markdown = markdown.replace(/!?\[(.*)\]\(.+\)/gm, "$1");
+ }
+ return markdown;
+}
+function escapeRegExp(string) {
+ return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
+}
+
+// src/actions/Action.ts
+var import_obsidian9 = __toModule(require("obsidian"));
+
+// src/modals/TagModal.ts
+var import_obsidian8 = __toModule(require("obsidian"));
+
+// src/settings/suggest.ts
+var import_obsidian7 = __toModule(require("obsidian"));
+
+// node_modules/@popperjs/core/lib/enums.js
+var top = "top";
+var bottom = "bottom";
+var right = "right";
+var left = "left";
+var auto = "auto";
+var basePlacements = [top, bottom, right, left];
+var start = "start";
+var end = "end";
+var clippingParents = "clippingParents";
+var viewport = "viewport";
+var popper = "popper";
+var reference = "reference";
+var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
+ return acc.concat([placement + "-" + start, placement + "-" + end]);
+}, []);
+var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
+ return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
+}, []);
+var beforeRead = "beforeRead";
+var read = "read";
+var afterRead = "afterRead";
+var beforeMain = "beforeMain";
+var main = "main";
+var afterMain = "afterMain";
+var beforeWrite = "beforeWrite";
+var write = "write";
+var afterWrite = "afterWrite";
+var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
+
+// node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
+function getNodeName(element2) {
+ return element2 ? (element2.nodeName || "").toLowerCase() : null;
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getWindow.js
+function getWindow(node) {
+ if (node == null) {
+ return window;
+ }
+ if (node.toString() !== "[object Window]") {
+ var ownerDocument = node.ownerDocument;
+ return ownerDocument ? ownerDocument.defaultView || window : window;
+ }
+ return node;
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
+function isElement(node) {
+ var OwnElement = getWindow(node).Element;
+ return node instanceof OwnElement || node instanceof Element;
+}
+function isHTMLElement(node) {
+ var OwnElement = getWindow(node).HTMLElement;
+ return node instanceof OwnElement || node instanceof HTMLElement;
+}
+function isShadowRoot(node) {
+ if (typeof ShadowRoot === "undefined") {
+ return false;
+ }
+ var OwnElement = getWindow(node).ShadowRoot;
+ return node instanceof OwnElement || node instanceof ShadowRoot;
+}
+
+// node_modules/@popperjs/core/lib/modifiers/applyStyles.js
+function applyStyles(_ref) {
+ var state = _ref.state;
+ Object.keys(state.elements).forEach(function(name) {
+ var style = state.styles[name] || {};
+ var attributes = state.attributes[name] || {};
+ var element2 = state.elements[name];
+ if (!isHTMLElement(element2) || !getNodeName(element2)) {
+ return;
+ }
+ Object.assign(element2.style, style);
+ Object.keys(attributes).forEach(function(name2) {
+ var value = attributes[name2];
+ if (value === false) {
+ element2.removeAttribute(name2);
+ } else {
+ element2.setAttribute(name2, value === true ? "" : value);
+ }
+ });
+ });
+}
+function effect(_ref2) {
+ var state = _ref2.state;
+ var initialStyles = {
+ popper: {
+ position: state.options.strategy,
+ left: "0",
+ top: "0",
+ margin: "0"
+ },
+ arrow: {
+ position: "absolute"
+ },
+ reference: {}
+ };
+ Object.assign(state.elements.popper.style, initialStyles.popper);
+ state.styles = initialStyles;
+ if (state.elements.arrow) {
+ Object.assign(state.elements.arrow.style, initialStyles.arrow);
+ }
+ return function() {
+ Object.keys(state.elements).forEach(function(name) {
+ var element2 = state.elements[name];
+ var attributes = state.attributes[name] || {};
+ var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
+ var style = styleProperties.reduce(function(style2, property) {
+ style2[property] = "";
+ return style2;
+ }, {});
+ if (!isHTMLElement(element2) || !getNodeName(element2)) {
+ return;
+ }
+ Object.assign(element2.style, style);
+ Object.keys(attributes).forEach(function(attribute) {
+ element2.removeAttribute(attribute);
+ });
+ });
+ };
+}
+var applyStyles_default = {
+ name: "applyStyles",
+ enabled: true,
+ phase: "write",
+ fn: applyStyles,
+ effect,
+ requires: ["computeStyles"]
+};
+
+// node_modules/@popperjs/core/lib/utils/getBasePlacement.js
+function getBasePlacement(placement) {
+ return placement.split("-")[0];
+}
+
+// node_modules/@popperjs/core/lib/utils/math.js
+var max = Math.max;
+var min = Math.min;
+var round = Math.round;
+
+// node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
+function getBoundingClientRect(element2, includeScale) {
+ if (includeScale === void 0) {
+ includeScale = false;
+ }
+ var rect = element2.getBoundingClientRect();
+ var scaleX = 1;
+ var scaleY = 1;
+ if (isHTMLElement(element2) && includeScale) {
+ var offsetHeight = element2.offsetHeight;
+ var offsetWidth = element2.offsetWidth;
+ if (offsetWidth > 0) {
+ scaleX = round(rect.width) / offsetWidth || 1;
+ }
+ if (offsetHeight > 0) {
+ scaleY = round(rect.height) / offsetHeight || 1;
+ }
+ }
+ return {
+ width: rect.width / scaleX,
+ height: rect.height / scaleY,
+ top: rect.top / scaleY,
+ right: rect.right / scaleX,
+ bottom: rect.bottom / scaleY,
+ left: rect.left / scaleX,
+ x: rect.left / scaleX,
+ y: rect.top / scaleY
+ };
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
+function getLayoutRect(element2) {
+ var clientRect = getBoundingClientRect(element2);
+ var width = element2.offsetWidth;
+ var height = element2.offsetHeight;
+ if (Math.abs(clientRect.width - width) <= 1) {
+ width = clientRect.width;
+ }
+ if (Math.abs(clientRect.height - height) <= 1) {
+ height = clientRect.height;
+ }
+ return {
+ x: element2.offsetLeft,
+ y: element2.offsetTop,
+ width,
+ height
+ };
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/contains.js
+function contains(parent, child) {
+ var rootNode = child.getRootNode && child.getRootNode();
+ if (parent.contains(child)) {
+ return true;
+ } else if (rootNode && isShadowRoot(rootNode)) {
+ var next = child;
+ do {
+ if (next && parent.isSameNode(next)) {
+ return true;
+ }
+ next = next.parentNode || next.host;
+ } while (next);
+ }
+ return false;
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
+function getComputedStyle2(element2) {
+ return getWindow(element2).getComputedStyle(element2);
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
+function isTableElement(element2) {
+ return ["table", "td", "th"].indexOf(getNodeName(element2)) >= 0;
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
+function getDocumentElement(element2) {
+ return ((isElement(element2) ? element2.ownerDocument : element2.document) || window.document).documentElement;
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
+function getParentNode(element2) {
+ if (getNodeName(element2) === "html") {
+ return element2;
+ }
+ return element2.assignedSlot || element2.parentNode || (isShadowRoot(element2) ? element2.host : null) || getDocumentElement(element2);
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
+function getTrueOffsetParent(element2) {
+ if (!isHTMLElement(element2) || getComputedStyle2(element2).position === "fixed") {
+ return null;
+ }
+ return element2.offsetParent;
+}
+function getContainingBlock(element2) {
+ var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1;
+ var isIE = navigator.userAgent.indexOf("Trident") !== -1;
+ if (isIE && isHTMLElement(element2)) {
+ var elementCss = getComputedStyle2(element2);
+ if (elementCss.position === "fixed") {
+ return null;
+ }
+ }
+ var currentNode = getParentNode(element2);
+ if (isShadowRoot(currentNode)) {
+ currentNode = currentNode.host;
+ }
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
+ var css = getComputedStyle2(currentNode);
+ if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") {
+ return currentNode;
+ } else {
+ currentNode = currentNode.parentNode;
+ }
+ }
+ return null;
+}
+function getOffsetParent(element2) {
+ var window2 = getWindow(element2);
+ var offsetParent = getTrueOffsetParent(element2);
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
+ offsetParent = getTrueOffsetParent(offsetParent);
+ }
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) {
+ return window2;
+ }
+ return offsetParent || getContainingBlock(element2) || window2;
+}
+
+// node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
+function getMainAxisFromPlacement(placement) {
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
+}
+
+// node_modules/@popperjs/core/lib/utils/within.js
+function within(min2, value, max2) {
+ return max(min2, min(value, max2));
+}
+function withinMaxClamp(min2, value, max2) {
+ var v = within(min2, value, max2);
+ return v > max2 ? max2 : v;
+}
+
+// node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
+function getFreshSideObject() {
+ return {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ };
+}
+
+// node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
+function mergePaddingObject(paddingObject) {
+ return Object.assign({}, getFreshSideObject(), paddingObject);
+}
+
+// node_modules/@popperjs/core/lib/utils/expandToHashMap.js
+function expandToHashMap(value, keys) {
+ return keys.reduce(function(hashMap, key) {
+ hashMap[key] = value;
+ return hashMap;
+ }, {});
+}
+
+// node_modules/@popperjs/core/lib/modifiers/arrow.js
+var toPaddingObject = function toPaddingObject2(padding, state) {
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
+ placement: state.placement
+ })) : padding;
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
+};
+function arrow(_ref) {
+ var _state$modifiersData$;
+ var state = _ref.state, name = _ref.name, options = _ref.options;
+ var arrowElement = state.elements.arrow;
+ var popperOffsets2 = state.modifiersData.popperOffsets;
+ var basePlacement = getBasePlacement(state.placement);
+ var axis = getMainAxisFromPlacement(basePlacement);
+ var isVertical = [left, right].indexOf(basePlacement) >= 0;
+ var len = isVertical ? "height" : "width";
+ if (!arrowElement || !popperOffsets2) {
+ return;
+ }
+ var paddingObject = toPaddingObject(options.padding, state);
+ var arrowRect = getLayoutRect(arrowElement);
+ var minProp = axis === "y" ? top : left;
+ var maxProp = axis === "y" ? bottom : right;
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
+ var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
+ var arrowOffsetParent = getOffsetParent(arrowElement);
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
+ var centerToReference = endDiff / 2 - startDiff / 2;
+ var min2 = paddingObject[minProp];
+ var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
+ var offset2 = within(min2, center, max2);
+ var axisProp = axis;
+ state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
+}
+function effect2(_ref2) {
+ var state = _ref2.state, options = _ref2.options;
+ var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
+ if (arrowElement == null) {
+ return;
+ }
+ if (typeof arrowElement === "string") {
+ arrowElement = state.elements.popper.querySelector(arrowElement);
+ if (!arrowElement) {
+ return;
+ }
+ }
+ if (true) {
+ if (!isHTMLElement(arrowElement)) {
+ console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" "));
+ }
+ }
+ if (!contains(state.elements.popper, arrowElement)) {
+ if (true) {
+ console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" "));
+ }
+ return;
+ }
+ state.elements.arrow = arrowElement;
+}
+var arrow_default = {
+ name: "arrow",
+ enabled: true,
+ phase: "main",
+ fn: arrow,
+ effect: effect2,
+ requires: ["popperOffsets"],
+ requiresIfExists: ["preventOverflow"]
+};
+
+// node_modules/@popperjs/core/lib/utils/getVariation.js
+function getVariation(placement) {
+ return placement.split("-")[1];
+}
+
+// node_modules/@popperjs/core/lib/modifiers/computeStyles.js
+var unsetSides = {
+ top: "auto",
+ right: "auto",
+ bottom: "auto",
+ left: "auto"
+};
+function roundOffsetsByDPR(_ref) {
+ var x = _ref.x, y = _ref.y;
+ var win = window;
+ var dpr = win.devicePixelRatio || 1;
+ return {
+ x: round(x * dpr) / dpr || 0,
+ y: round(y * dpr) / dpr || 0
+ };
+}
+function mapToStyles(_ref2) {
+ var _Object$assign2;
+ var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
+ x,
+ y
+ }) : {
+ x,
+ y
+ };
+ x = _ref3.x;
+ y = _ref3.y;
+ var hasX = offsets.hasOwnProperty("x");
+ var hasY = offsets.hasOwnProperty("y");
+ var sideX = left;
+ var sideY = top;
+ var win = window;
+ if (adaptive) {
+ var offsetParent = getOffsetParent(popper2);
+ var heightProp = "clientHeight";
+ var widthProp = "clientWidth";
+ if (offsetParent === getWindow(popper2)) {
+ offsetParent = getDocumentElement(popper2);
+ if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") {
+ heightProp = "scrollHeight";
+ widthProp = "scrollWidth";
+ }
+ }
+ offsetParent = offsetParent;
+ if (placement === top || (placement === left || placement === right) && variation === end) {
+ sideY = bottom;
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
+ y -= offsetY - popperRect.height;
+ y *= gpuAcceleration ? 1 : -1;
+ }
+ if (placement === left || (placement === top || placement === bottom) && variation === end) {
+ sideX = right;
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
+ x -= offsetX - popperRect.width;
+ x *= gpuAcceleration ? 1 : -1;
+ }
+ }
+ var commonStyles = Object.assign({
+ position
+ }, adaptive && unsetSides);
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
+ x,
+ y
+ }) : {
+ x,
+ y
+ };
+ x = _ref4.x;
+ y = _ref4.y;
+ if (gpuAcceleration) {
+ var _Object$assign;
+ return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
+ }
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
+}
+function computeStyles(_ref5) {
+ var state = _ref5.state, options = _ref5.options;
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
+ if (true) {
+ var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || "";
+ if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) {
+ return transitionProperty.indexOf(property) >= 0;
+ })) {
+ console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" "));
+ }
+ }
+ var commonStyles = {
+ placement: getBasePlacement(state.placement),
+ variation: getVariation(state.placement),
+ popper: state.elements.popper,
+ popperRect: state.rects.popper,
+ gpuAcceleration,
+ isFixed: state.options.strategy === "fixed"
+ };
+ if (state.modifiersData.popperOffsets != null) {
+ state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
+ offsets: state.modifiersData.popperOffsets,
+ position: state.options.strategy,
+ adaptive,
+ roundOffsets
+ })));
+ }
+ if (state.modifiersData.arrow != null) {
+ state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
+ offsets: state.modifiersData.arrow,
+ position: "absolute",
+ adaptive: false,
+ roundOffsets
+ })));
+ }
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
+ "data-popper-placement": state.placement
+ });
+}
+var computeStyles_default = {
+ name: "computeStyles",
+ enabled: true,
+ phase: "beforeWrite",
+ fn: computeStyles,
+ data: {}
+};
+
+// node_modules/@popperjs/core/lib/modifiers/eventListeners.js
+var passive = {
+ passive: true
+};
+function effect3(_ref) {
+ var state = _ref.state, instance9 = _ref.instance, options = _ref.options;
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
+ var window2 = getWindow(state.elements.popper);
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
+ if (scroll) {
+ scrollParents.forEach(function(scrollParent) {
+ scrollParent.addEventListener("scroll", instance9.update, passive);
+ });
+ }
+ if (resize) {
+ window2.addEventListener("resize", instance9.update, passive);
+ }
+ return function() {
+ if (scroll) {
+ scrollParents.forEach(function(scrollParent) {
+ scrollParent.removeEventListener("scroll", instance9.update, passive);
+ });
+ }
+ if (resize) {
+ window2.removeEventListener("resize", instance9.update, passive);
+ }
+ };
+}
+var eventListeners_default = {
+ name: "eventListeners",
+ enabled: true,
+ phase: "write",
+ fn: function fn() {
+ },
+ effect: effect3,
+ data: {}
+};
+
+// node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
+var hash = {
+ left: "right",
+ right: "left",
+ bottom: "top",
+ top: "bottom"
+};
+function getOppositePlacement(placement) {
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
+ return hash[matched];
+ });
+}
+
+// node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
+var hash2 = {
+ start: "end",
+ end: "start"
+};
+function getOppositeVariationPlacement(placement) {
+ return placement.replace(/start|end/g, function(matched) {
+ return hash2[matched];
+ });
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
+function getWindowScroll(node) {
+ var win = getWindow(node);
+ var scrollLeft = win.pageXOffset;
+ var scrollTop = win.pageYOffset;
+ return {
+ scrollLeft,
+ scrollTop
+ };
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
+function getWindowScrollBarX(element2) {
+ return getBoundingClientRect(getDocumentElement(element2)).left + getWindowScroll(element2).scrollLeft;
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
+function getViewportRect(element2) {
+ var win = getWindow(element2);
+ var html = getDocumentElement(element2);
+ var visualViewport = win.visualViewport;
+ var width = html.clientWidth;
+ var height = html.clientHeight;
+ var x = 0;
+ var y = 0;
+ if (visualViewport) {
+ width = visualViewport.width;
+ height = visualViewport.height;
+ if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
+ x = visualViewport.offsetLeft;
+ y = visualViewport.offsetTop;
+ }
+ }
+ return {
+ width,
+ height,
+ x: x + getWindowScrollBarX(element2),
+ y
+ };
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
+function getDocumentRect(element2) {
+ var _element$ownerDocumen;
+ var html = getDocumentElement(element2);
+ var winScroll = getWindowScroll(element2);
+ var body = (_element$ownerDocumen = element2.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element2);
+ var y = -winScroll.scrollTop;
+ if (getComputedStyle2(body || html).direction === "rtl") {
+ x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
+ }
+ return {
+ width,
+ height,
+ x,
+ y
+ };
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
+function isScrollParent(element2) {
+ var _getComputedStyle = getComputedStyle2(element2), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
+function getScrollParent(node) {
+ if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
+ return node.ownerDocument.body;
+ }
+ if (isHTMLElement(node) && isScrollParent(node)) {
+ return node;
+ }
+ return getScrollParent(getParentNode(node));
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
+function listScrollParents(element2, list) {
+ var _element$ownerDocumen;
+ if (list === void 0) {
+ list = [];
+ }
+ var scrollParent = getScrollParent(element2);
+ var isBody = scrollParent === ((_element$ownerDocumen = element2.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
+ var win = getWindow(scrollParent);
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
+ var updatedList = list.concat(target);
+ return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
+}
+
+// node_modules/@popperjs/core/lib/utils/rectToClientRect.js
+function rectToClientRect(rect) {
+ return Object.assign({}, rect, {
+ left: rect.x,
+ top: rect.y,
+ right: rect.x + rect.width,
+ bottom: rect.y + rect.height
+ });
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
+function getInnerBoundingClientRect(element2) {
+ var rect = getBoundingClientRect(element2);
+ rect.top = rect.top + element2.clientTop;
+ rect.left = rect.left + element2.clientLeft;
+ rect.bottom = rect.top + element2.clientHeight;
+ rect.right = rect.left + element2.clientWidth;
+ rect.width = element2.clientWidth;
+ rect.height = element2.clientHeight;
+ rect.x = rect.left;
+ rect.y = rect.top;
+ return rect;
+}
+function getClientRectFromMixedType(element2, clippingParent) {
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element2)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element2)));
+}
+function getClippingParents(element2) {
+ var clippingParents2 = listScrollParents(getParentNode(element2));
+ var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element2).position) >= 0;
+ var clipperElement = canEscapeClipping && isHTMLElement(element2) ? getOffsetParent(element2) : element2;
+ if (!isElement(clipperElement)) {
+ return [];
+ }
+ return clippingParents2.filter(function(clippingParent) {
+ return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
+ });
+}
+function getClippingRect(element2, boundary, rootBoundary) {
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element2) : [].concat(boundary);
+ var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
+ var firstClippingParent = clippingParents2[0];
+ var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
+ var rect = getClientRectFromMixedType(element2, clippingParent);
+ accRect.top = max(rect.top, accRect.top);
+ accRect.right = min(rect.right, accRect.right);
+ accRect.bottom = min(rect.bottom, accRect.bottom);
+ accRect.left = max(rect.left, accRect.left);
+ return accRect;
+ }, getClientRectFromMixedType(element2, firstClippingParent));
+ clippingRect.width = clippingRect.right - clippingRect.left;
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
+ clippingRect.x = clippingRect.left;
+ clippingRect.y = clippingRect.top;
+ return clippingRect;
+}
+
+// node_modules/@popperjs/core/lib/utils/computeOffsets.js
+function computeOffsets(_ref) {
+ var reference2 = _ref.reference, element2 = _ref.element, placement = _ref.placement;
+ var basePlacement = placement ? getBasePlacement(placement) : null;
+ var variation = placement ? getVariation(placement) : null;
+ var commonX = reference2.x + reference2.width / 2 - element2.width / 2;
+ var commonY = reference2.y + reference2.height / 2 - element2.height / 2;
+ var offsets;
+ switch (basePlacement) {
+ case top:
+ offsets = {
+ x: commonX,
+ y: reference2.y - element2.height
+ };
+ break;
+ case bottom:
+ offsets = {
+ x: commonX,
+ y: reference2.y + reference2.height
+ };
+ break;
+ case right:
+ offsets = {
+ x: reference2.x + reference2.width,
+ y: commonY
+ };
+ break;
+ case left:
+ offsets = {
+ x: reference2.x - element2.width,
+ y: commonY
+ };
+ break;
+ default:
+ offsets = {
+ x: reference2.x,
+ y: reference2.y
+ };
+ }
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
+ if (mainAxis != null) {
+ var len = mainAxis === "y" ? "height" : "width";
+ switch (variation) {
+ case start:
+ offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element2[len] / 2);
+ break;
+ case end:
+ offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element2[len] / 2);
+ break;
+ default:
+ }
+ }
+ return offsets;
+}
+
+// node_modules/@popperjs/core/lib/utils/detectOverflow.js
+function detectOverflow(state, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
+ var altContext = elementContext === popper ? reference : popper;
+ var popperRect = state.rects.popper;
+ var element2 = state.elements[altBoundary ? altContext : elementContext];
+ var clippingClientRect = getClippingRect(isElement(element2) ? element2 : element2.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
+ var popperOffsets2 = computeOffsets({
+ reference: referenceClientRect,
+ element: popperRect,
+ strategy: "absolute",
+ placement
+ });
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
+ var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
+ var overflowOffsets = {
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
+ };
+ var offsetData = state.modifiersData.offset;
+ if (elementContext === popper && offsetData) {
+ var offset2 = offsetData[placement];
+ Object.keys(overflowOffsets).forEach(function(key) {
+ var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
+ var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
+ overflowOffsets[key] += offset2[axis] * multiply;
+ });
+ }
+ return overflowOffsets;
+}
+
+// node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
+function computeAutoPlacement(state, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
+ var variation = getVariation(placement);
+ var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
+ return getVariation(placement2) === variation;
+ }) : basePlacements;
+ var allowedPlacements = placements2.filter(function(placement2) {
+ return allowedAutoPlacements.indexOf(placement2) >= 0;
+ });
+ if (allowedPlacements.length === 0) {
+ allowedPlacements = placements2;
+ if (true) {
+ console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" "));
+ }
+ }
+ var overflows = allowedPlacements.reduce(function(acc, placement2) {
+ acc[placement2] = detectOverflow(state, {
+ placement: placement2,
+ boundary,
+ rootBoundary,
+ padding
+ })[getBasePlacement(placement2)];
+ return acc;
+ }, {});
+ return Object.keys(overflows).sort(function(a, b) {
+ return overflows[a] - overflows[b];
+ });
+}
+
+// node_modules/@popperjs/core/lib/modifiers/flip.js
+function getExpandedFallbackPlacements(placement) {
+ if (getBasePlacement(placement) === auto) {
+ return [];
+ }
+ var oppositePlacement = getOppositePlacement(placement);
+ return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
+}
+function flip(_ref) {
+ var state = _ref.state, options = _ref.options, name = _ref.name;
+ if (state.modifiersData[name]._skip) {
+ return;
+ }
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
+ var preferredPlacement = state.options.placement;
+ var basePlacement = getBasePlacement(preferredPlacement);
+ var isBasePlacement = basePlacement === preferredPlacement;
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
+ var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
+ return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
+ placement: placement2,
+ boundary,
+ rootBoundary,
+ padding,
+ flipVariations,
+ allowedAutoPlacements
+ }) : placement2);
+ }, []);
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var checksMap = new Map();
+ var makeFallbackChecks = true;
+ var firstFittingPlacement = placements2[0];
+ for (var i = 0; i < placements2.length; i++) {
+ var placement = placements2[i];
+ var _basePlacement = getBasePlacement(placement);
+ var isStartVariation = getVariation(placement) === start;
+ var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
+ var len = isVertical ? "width" : "height";
+ var overflow = detectOverflow(state, {
+ placement,
+ boundary,
+ rootBoundary,
+ altBoundary,
+ padding
+ });
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
+ if (referenceRect[len] > popperRect[len]) {
+ mainVariationSide = getOppositePlacement(mainVariationSide);
+ }
+ var altVariationSide = getOppositePlacement(mainVariationSide);
+ var checks = [];
+ if (checkMainAxis) {
+ checks.push(overflow[_basePlacement] <= 0);
+ }
+ if (checkAltAxis) {
+ checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
+ }
+ if (checks.every(function(check) {
+ return check;
+ })) {
+ firstFittingPlacement = placement;
+ makeFallbackChecks = false;
+ break;
+ }
+ checksMap.set(placement, checks);
+ }
+ if (makeFallbackChecks) {
+ var numberOfChecks = flipVariations ? 3 : 1;
+ var _loop = function _loop2(_i2) {
+ var fittingPlacement = placements2.find(function(placement2) {
+ var checks2 = checksMap.get(placement2);
+ if (checks2) {
+ return checks2.slice(0, _i2).every(function(check) {
+ return check;
+ });
+ }
+ });
+ if (fittingPlacement) {
+ firstFittingPlacement = fittingPlacement;
+ return "break";
+ }
+ };
+ for (var _i = numberOfChecks; _i > 0; _i--) {
+ var _ret = _loop(_i);
+ if (_ret === "break")
+ break;
+ }
+ }
+ if (state.placement !== firstFittingPlacement) {
+ state.modifiersData[name]._skip = true;
+ state.placement = firstFittingPlacement;
+ state.reset = true;
+ }
+}
+var flip_default = {
+ name: "flip",
+ enabled: true,
+ phase: "main",
+ fn: flip,
+ requiresIfExists: ["offset"],
+ data: {
+ _skip: false
+ }
+};
+
+// node_modules/@popperjs/core/lib/modifiers/hide.js
+function getSideOffsets(overflow, rect, preventedOffsets) {
+ if (preventedOffsets === void 0) {
+ preventedOffsets = {
+ x: 0,
+ y: 0
+ };
+ }
+ return {
+ top: overflow.top - rect.height - preventedOffsets.y,
+ right: overflow.right - rect.width + preventedOffsets.x,
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
+ left: overflow.left - rect.width - preventedOffsets.x
+ };
+}
+function isAnySideFullyClipped(overflow) {
+ return [top, right, bottom, left].some(function(side) {
+ return overflow[side] >= 0;
+ });
+}
+function hide(_ref) {
+ var state = _ref.state, name = _ref.name;
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var preventedOffsets = state.modifiersData.preventOverflow;
+ var referenceOverflow = detectOverflow(state, {
+ elementContext: "reference"
+ });
+ var popperAltOverflow = detectOverflow(state, {
+ altBoundary: true
+ });
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
+ state.modifiersData[name] = {
+ referenceClippingOffsets,
+ popperEscapeOffsets,
+ isReferenceHidden,
+ hasPopperEscaped
+ };
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
+ "data-popper-reference-hidden": isReferenceHidden,
+ "data-popper-escaped": hasPopperEscaped
+ });
+}
+var hide_default = {
+ name: "hide",
+ enabled: true,
+ phase: "main",
+ requiresIfExists: ["preventOverflow"],
+ fn: hide
+};
+
+// node_modules/@popperjs/core/lib/modifiers/offset.js
+function distanceAndSkiddingToXY(placement, rects, offset2) {
+ var basePlacement = getBasePlacement(placement);
+ var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
+ var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
+ placement
+ })) : offset2, skidding = _ref[0], distance = _ref[1];
+ skidding = skidding || 0;
+ distance = (distance || 0) * invertDistance;
+ return [left, right].indexOf(basePlacement) >= 0 ? {
+ x: distance,
+ y: skidding
+ } : {
+ x: skidding,
+ y: distance
+ };
+}
+function offset(_ref2) {
+ var state = _ref2.state, options = _ref2.options, name = _ref2.name;
+ var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
+ var data = placements.reduce(function(acc, placement) {
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
+ return acc;
+ }, {});
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
+ if (state.modifiersData.popperOffsets != null) {
+ state.modifiersData.popperOffsets.x += x;
+ state.modifiersData.popperOffsets.y += y;
+ }
+ state.modifiersData[name] = data;
+}
+var offset_default = {
+ name: "offset",
+ enabled: true,
+ phase: "main",
+ requires: ["popperOffsets"],
+ fn: offset
+};
+
+// node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
+function popperOffsets(_ref) {
+ var state = _ref.state, name = _ref.name;
+ state.modifiersData[name] = computeOffsets({
+ reference: state.rects.reference,
+ element: state.rects.popper,
+ strategy: "absolute",
+ placement: state.placement
+ });
+}
+var popperOffsets_default = {
+ name: "popperOffsets",
+ enabled: true,
+ phase: "read",
+ fn: popperOffsets,
+ data: {}
+};
+
+// node_modules/@popperjs/core/lib/utils/getAltAxis.js
+function getAltAxis(axis) {
+ return axis === "x" ? "y" : "x";
+}
+
+// node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
+function preventOverflow(_ref) {
+ var state = _ref.state, options = _ref.options, name = _ref.name;
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
+ var overflow = detectOverflow(state, {
+ boundary,
+ rootBoundary,
+ padding,
+ altBoundary
+ });
+ var basePlacement = getBasePlacement(state.placement);
+ var variation = getVariation(state.placement);
+ var isBasePlacement = !variation;
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
+ var altAxis = getAltAxis(mainAxis);
+ var popperOffsets2 = state.modifiersData.popperOffsets;
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
+ placement: state.placement
+ })) : tetherOffset;
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
+ mainAxis: tetherOffsetValue,
+ altAxis: tetherOffsetValue
+ } : Object.assign({
+ mainAxis: 0,
+ altAxis: 0
+ }, tetherOffsetValue);
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
+ var data = {
+ x: 0,
+ y: 0
+ };
+ if (!popperOffsets2) {
+ return;
+ }
+ if (checkMainAxis) {
+ var _offsetModifierState$;
+ var mainSide = mainAxis === "y" ? top : left;
+ var altSide = mainAxis === "y" ? bottom : right;
+ var len = mainAxis === "y" ? "height" : "width";
+ var offset2 = popperOffsets2[mainAxis];
+ var min2 = offset2 + overflow[mainSide];
+ var max2 = offset2 - overflow[altSide];
+ var additive = tether ? -popperRect[len] / 2 : 0;
+ var minLen = variation === start ? referenceRect[len] : popperRect[len];
+ var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
+ var arrowElement = state.elements.arrow;
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
+ width: 0,
+ height: 0
+ };
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
+ var arrowPaddingMax = arrowPaddingObject[altSide];
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
+ var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
+ var tetherMax = offset2 + maxOffset - offsetModifierValue;
+ var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);
+ popperOffsets2[mainAxis] = preventedOffset;
+ data[mainAxis] = preventedOffset - offset2;
+ }
+ if (checkAltAxis) {
+ var _offsetModifierState$2;
+ var _mainSide = mainAxis === "x" ? top : left;
+ var _altSide = mainAxis === "x" ? bottom : right;
+ var _offset = popperOffsets2[altAxis];
+ var _len = altAxis === "y" ? "height" : "width";
+ var _min = _offset + overflow[_mainSide];
+ var _max = _offset - overflow[_altSide];
+ var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
+ popperOffsets2[altAxis] = _preventedOffset;
+ data[altAxis] = _preventedOffset - _offset;
+ }
+ state.modifiersData[name] = data;
+}
+var preventOverflow_default = {
+ name: "preventOverflow",
+ enabled: true,
+ phase: "main",
+ fn: preventOverflow,
+ requiresIfExists: ["offset"]
+};
+
+// node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
+function getHTMLElementScroll(element2) {
+ return {
+ scrollLeft: element2.scrollLeft,
+ scrollTop: element2.scrollTop
+ };
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
+function getNodeScroll(node) {
+ if (node === getWindow(node) || !isHTMLElement(node)) {
+ return getWindowScroll(node);
+ } else {
+ return getHTMLElementScroll(node);
+ }
+}
+
+// node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
+function isElementScaled(element2) {
+ var rect = element2.getBoundingClientRect();
+ var scaleX = round(rect.width) / element2.offsetWidth || 1;
+ var scaleY = round(rect.height) / element2.offsetHeight || 1;
+ return scaleX !== 1 || scaleY !== 1;
+}
+function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
+ if (isFixed === void 0) {
+ isFixed = false;
+ }
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
+ var documentElement = getDocumentElement(offsetParent);
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
+ var scroll = {
+ scrollLeft: 0,
+ scrollTop: 0
+ };
+ var offsets = {
+ x: 0,
+ y: 0
+ };
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
+ if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
+ scroll = getNodeScroll(offsetParent);
+ }
+ if (isHTMLElement(offsetParent)) {
+ offsets = getBoundingClientRect(offsetParent, true);
+ offsets.x += offsetParent.clientLeft;
+ offsets.y += offsetParent.clientTop;
+ } else if (documentElement) {
+ offsets.x = getWindowScrollBarX(documentElement);
+ }
+ }
+ return {
+ x: rect.left + scroll.scrollLeft - offsets.x,
+ y: rect.top + scroll.scrollTop - offsets.y,
+ width: rect.width,
+ height: rect.height
+ };
+}
+
+// node_modules/@popperjs/core/lib/utils/orderModifiers.js
+function order(modifiers) {
+ var map = new Map();
+ var visited = new Set();
+ var result = [];
+ modifiers.forEach(function(modifier) {
+ map.set(modifier.name, modifier);
+ });
+ function sort(modifier) {
+ visited.add(modifier.name);
+ var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
+ requires.forEach(function(dep) {
+ if (!visited.has(dep)) {
+ var depModifier = map.get(dep);
+ if (depModifier) {
+ sort(depModifier);
+ }
+ }
+ });
+ result.push(modifier);
+ }
+ modifiers.forEach(function(modifier) {
+ if (!visited.has(modifier.name)) {
+ sort(modifier);
+ }
+ });
+ return result;
+}
+function orderModifiers(modifiers) {
+ var orderedModifiers = order(modifiers);
+ return modifierPhases.reduce(function(acc, phase) {
+ return acc.concat(orderedModifiers.filter(function(modifier) {
+ return modifier.phase === phase;
+ }));
+ }, []);
+}
+
+// node_modules/@popperjs/core/lib/utils/debounce.js
+function debounce(fn2) {
+ var pending;
+ return function() {
+ if (!pending) {
+ pending = new Promise(function(resolve) {
+ Promise.resolve().then(function() {
+ pending = void 0;
+ resolve(fn2());
+ });
+ });
+ }
+ return pending;
+ };
+}
+
+// node_modules/@popperjs/core/lib/utils/format.js
+function format(str) {
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+ return [].concat(args).reduce(function(p, c) {
+ return p.replace(/%s/, c);
+ }, str);
+}
+
+// node_modules/@popperjs/core/lib/utils/validateModifiers.js
+var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
+var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
+var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"];
+function validateModifiers(modifiers) {
+ modifiers.forEach(function(modifier) {
+ [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self2) {
+ return self2.indexOf(value) === index;
+ }).forEach(function(key) {
+ switch (key) {
+ case "name":
+ if (typeof modifier.name !== "string") {
+ console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"'));
+ }
+ break;
+ case "enabled":
+ if (typeof modifier.enabled !== "boolean") {
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"'));
+ }
+ break;
+ case "phase":
+ if (modifierPhases.indexOf(modifier.phase) < 0) {
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"'));
+ }
+ break;
+ case "fn":
+ if (typeof modifier.fn !== "function") {
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"'));
+ }
+ break;
+ case "effect":
+ if (modifier.effect != null && typeof modifier.effect !== "function") {
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"'));
+ }
+ break;
+ case "requires":
+ if (modifier.requires != null && !Array.isArray(modifier.requires)) {
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"'));
+ }
+ break;
+ case "requiresIfExists":
+ if (!Array.isArray(modifier.requiresIfExists)) {
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"'));
+ }
+ break;
+ case "options":
+ case "data":
+ break;
+ default:
+ console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) {
+ return '"' + s + '"';
+ }).join(", ") + '; but "' + key + '" was provided.');
+ }
+ modifier.requires && modifier.requires.forEach(function(requirement) {
+ if (modifiers.find(function(mod) {
+ return mod.name === requirement;
+ }) == null) {
+ console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
+ }
+ });
+ });
+ });
+}
+
+// node_modules/@popperjs/core/lib/utils/uniqueBy.js
+function uniqueBy(arr, fn2) {
+ var identifiers = new Set();
+ return arr.filter(function(item) {
+ var identifier = fn2(item);
+ if (!identifiers.has(identifier)) {
+ identifiers.add(identifier);
+ return true;
+ }
+ });
+}
+
+// node_modules/@popperjs/core/lib/utils/mergeByName.js
+function mergeByName(modifiers) {
+ var merged = modifiers.reduce(function(merged2, current) {
+ var existing = merged2[current.name];
+ merged2[current.name] = existing ? Object.assign({}, existing, current, {
+ options: Object.assign({}, existing.options, current.options),
+ data: Object.assign({}, existing.data, current.data)
+ }) : current;
+ return merged2;
+ }, {});
+ return Object.keys(merged).map(function(key) {
+ return merged[key];
+ });
+}
+
+// node_modules/@popperjs/core/lib/createPopper.js
+var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.";
+var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.";
+var DEFAULT_OPTIONS = {
+ placement: "bottom",
+ modifiers: [],
+ strategy: "absolute"
+};
+function areValidElements() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ return !args.some(function(element2) {
+ return !(element2 && typeof element2.getBoundingClientRect === "function");
+ });
+}
+function popperGenerator(generatorOptions) {
+ if (generatorOptions === void 0) {
+ generatorOptions = {};
+ }
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
+ return function createPopper2(reference2, popper2, options) {
+ if (options === void 0) {
+ options = defaultOptions;
+ }
+ var state = {
+ placement: "bottom",
+ orderedModifiers: [],
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
+ modifiersData: {},
+ elements: {
+ reference: reference2,
+ popper: popper2
+ },
+ attributes: {},
+ styles: {}
+ };
+ var effectCleanupFns = [];
+ var isDestroyed = false;
+ var instance9 = {
+ state,
+ setOptions: function setOptions(setOptionsAction) {
+ var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
+ cleanupModifierEffects();
+ state.options = Object.assign({}, defaultOptions, state.options, options2);
+ state.scrollParents = {
+ reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
+ popper: listScrollParents(popper2)
+ };
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
+ return m.enabled;
+ });
+ if (true) {
+ var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {
+ var name = _ref.name;
+ return name;
+ });
+ validateModifiers(modifiers);
+ if (getBasePlacement(state.options.placement) === auto) {
+ var flipModifier = state.orderedModifiers.find(function(_ref2) {
+ var name = _ref2.name;
+ return name === "flip";
+ });
+ if (!flipModifier) {
+ console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" "));
+ }
+ }
+ var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft;
+ if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {
+ return parseFloat(margin);
+ })) {
+ console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" "));
+ }
+ }
+ runModifierEffects();
+ return instance9.update();
+ },
+ forceUpdate: function forceUpdate() {
+ if (isDestroyed) {
+ return;
+ }
+ var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
+ if (!areValidElements(reference3, popper3)) {
+ if (true) {
+ console.error(INVALID_ELEMENT_ERROR);
+ }
+ return;
+ }
+ state.rects = {
+ reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
+ popper: getLayoutRect(popper3)
+ };
+ state.reset = false;
+ state.placement = state.options.placement;
+ state.orderedModifiers.forEach(function(modifier) {
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
+ });
+ var __debug_loops__ = 0;
+ for (var index = 0; index < state.orderedModifiers.length; index++) {
+ if (true) {
+ __debug_loops__ += 1;
+ if (__debug_loops__ > 100) {
+ console.error(INFINITE_LOOP_ERROR);
+ break;
+ }
+ }
+ if (state.reset === true) {
+ state.reset = false;
+ index = -1;
+ continue;
+ }
+ var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
+ if (typeof fn2 === "function") {
+ state = fn2({
+ state,
+ options: _options,
+ name,
+ instance: instance9
+ }) || state;
+ }
+ }
+ },
+ update: debounce(function() {
+ return new Promise(function(resolve) {
+ instance9.forceUpdate();
+ resolve(state);
+ });
+ }),
+ destroy: function destroy() {
+ cleanupModifierEffects();
+ isDestroyed = true;
+ }
+ };
+ if (!areValidElements(reference2, popper2)) {
+ if (true) {
+ console.error(INVALID_ELEMENT_ERROR);
+ }
+ return instance9;
+ }
+ instance9.setOptions(options).then(function(state2) {
+ if (!isDestroyed && options.onFirstUpdate) {
+ options.onFirstUpdate(state2);
+ }
+ });
+ function runModifierEffects() {
+ state.orderedModifiers.forEach(function(_ref3) {
+ var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect4 = _ref3.effect;
+ if (typeof effect4 === "function") {
+ var cleanupFn = effect4({
+ state,
+ name,
+ instance: instance9,
+ options: options2
+ });
+ var noopFn = function noopFn2() {
+ };
+ effectCleanupFns.push(cleanupFn || noopFn);
+ }
+ });
+ }
+ function cleanupModifierEffects() {
+ effectCleanupFns.forEach(function(fn2) {
+ return fn2();
+ });
+ effectCleanupFns = [];
+ }
+ return instance9;
+ };
+}
+
+// node_modules/@popperjs/core/lib/popper.js
+var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
+var createPopper = /* @__PURE__ */ popperGenerator({
+ defaultModifiers
+});
+
+// src/settings/suggest.ts
+var wrapAround = (value, size) => {
+ return (value % size + size) % size;
+};
+var Suggest = class {
+ constructor(owner, containerEl, scope) {
+ this.owner = owner;
+ this.containerEl = containerEl;
+ containerEl.on("click", ".suggestion-item", this.onSuggestionClick.bind(this));
+ containerEl.on("mousemove", ".suggestion-item", this.onSuggestionMouseover.bind(this));
+ scope.register([], "ArrowUp", (event) => {
+ if (!event.isComposing) {
+ this.setSelectedItem(this.selectedItem - 1, true);
+ return false;
+ }
+ });
+ scope.register([], "ArrowDown", (event) => {
+ if (!event.isComposing) {
+ this.setSelectedItem(this.selectedItem + 1, true);
+ return false;
+ }
+ });
+ scope.register([], "Enter", (event) => {
+ if (!event.isComposing) {
+ this.useSelectedItem(event);
+ return false;
+ }
+ });
+ }
+ onSuggestionClick(event, el) {
+ event.preventDefault();
+ const item = this.suggestions.indexOf(el);
+ this.setSelectedItem(item, false);
+ this.useSelectedItem(event);
+ }
+ onSuggestionMouseover(_event, el) {
+ const item = this.suggestions.indexOf(el);
+ this.setSelectedItem(item, false);
+ }
+ setSuggestions(values2) {
+ this.containerEl.empty();
+ const suggestionEls = [];
+ values2.forEach((value) => {
+ const suggestionEl = this.containerEl.createDiv("suggestion-item");
+ this.owner.renderSuggestion(value, suggestionEl);
+ suggestionEls.push(suggestionEl);
+ });
+ this.values = values2;
+ this.suggestions = suggestionEls;
+ this.setSelectedItem(0, false);
+ }
+ useSelectedItem(event) {
+ const currentValue = this.values[this.selectedItem];
+ if (currentValue) {
+ this.owner.selectSuggestion(currentValue, event);
+ }
+ }
+ setSelectedItem(selectedIndex, scrollIntoView) {
+ const normalizedIndex = wrapAround(selectedIndex, this.suggestions.length);
+ const prevSelectedSuggestion = this.suggestions[this.selectedItem];
+ const selectedSuggestion = this.suggestions[normalizedIndex];
+ prevSelectedSuggestion == null ? void 0 : prevSelectedSuggestion.removeClass("is-selected");
+ selectedSuggestion == null ? void 0 : selectedSuggestion.addClass("is-selected");
+ this.selectedItem = normalizedIndex;
+ if (scrollIntoView) {
+ selectedSuggestion.scrollIntoView(false);
+ }
+ }
+};
+var TextInputSuggest = class {
+ constructor(app, inputEl) {
+ this.app = app;
+ this.inputEl = inputEl;
+ this.scope = new import_obsidian7.Scope();
+ this.suggestEl = createDiv("suggestion-container");
+ const suggestion = this.suggestEl.createDiv("suggestion");
+ this.suggest = new Suggest(this, suggestion, this.scope);
+ this.scope.register([], "Escape", this.close.bind(this));
+ this.inputEl.addEventListener("input", this.onInputChanged.bind(this));
+ this.inputEl.addEventListener("focus", this.onInputChanged.bind(this));
+ this.inputEl.addEventListener("blur", this.close.bind(this));
+ this.suggestEl.on("mousedown", ".suggestion-container", (event) => {
+ event.preventDefault();
+ });
+ }
+ onInputChanged() {
+ const inputStr = this.inputEl.value;
+ const suggestions = this.getSuggestions(inputStr);
+ if (!suggestions) {
+ this.close();
+ return;
+ }
+ if (suggestions.length > 0) {
+ this.suggest.setSuggestions(suggestions);
+ this.open(this.app.dom.appContainerEl, this.inputEl);
+ } else {
+ this.close();
+ }
+ }
+ open(container, inputEl) {
+ this.app.keymap.pushScope(this.scope);
+ container.appendChild(this.suggestEl);
+ this.popper = createPopper(inputEl, this.suggestEl, {
+ placement: "bottom-start",
+ modifiers: [
+ {
+ name: "sameWidth",
+ enabled: true,
+ fn: ({ state, instance: instance9 }) => {
+ const targetWidth = `${state.rects.reference.width}px`;
+ if (state.styles.popper.width === targetWidth) {
+ return;
+ }
+ state.styles.popper.width = targetWidth;
+ instance9.update();
+ },
+ phase: "beforeWrite",
+ requires: ["computeStyles"]
+ }
+ ]
+ });
+ }
+ close() {
+ this.app.keymap.popScope(this.scope);
+ this.suggest.setSuggestions([]);
+ if (this.popper)
+ this.popper.destroy();
+ this.suggestEl.detach();
+ }
+};
+
+// src/view/ArraySuggest.ts
+var ArraySuggest = class extends TextInputSuggest {
+ constructor(app, input, content) {
+ super(app, input);
+ this.content = content;
+ }
+ getSuggestions(inputStr) {
+ const lowerCaseInputStr = inputStr.toLowerCase();
+ return [...this.content].filter((content) => content.contains(lowerCaseInputStr));
+ }
+ renderSuggestion(content, el) {
+ el.setText(content);
+ }
+ selectSuggestion(content) {
+ this.inputEl.value = content;
+ this.inputEl.trigger("input");
+ this.close();
+ }
+};
+
+// src/modals/TagModal.ts
+var TagModal = class extends BaseModal {
+ constructor(plugin, tags) {
+ super(plugin.app);
+ this.plugin = plugin;
+ this.tags = tags;
+ }
+ display() {
+ const { contentEl } = this;
+ contentEl.empty();
+ contentEl.createEl("h1", { text: t("edit_tags") });
+ const tagDiv = contentEl.createDiv("tags");
+ for (const tag in this.tags) {
+ new import_obsidian8.Setting(tagDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, get_store_value(tagsStore));
+ search.setValue(this.tags[tag]).onChange((value) => __async(this, null, function* () {
+ this.removeValidationError(search);
+ if (!value.match(TAG_REGEX) || value.match(NUMBER_REGEX) || value.contains(" ") || value.contains("#")) {
+ this.setValidationError(search, t("invalid_tag"));
+ return;
+ }
+ this.tags = this.tags.filter((e) => e !== this.tags[tag]);
+ this.tags.push(value);
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.tags = this.tags.filter((e) => e !== this.tags[tag]);
+ this.display();
+ });
+ });
+ }
+ let tagValue = "";
+ let tagComponent;
+ const newTag = new import_obsidian8.Setting(tagDiv).addSearch((search) => __async(this, null, function* () {
+ tagComponent = search;
+ new ArraySuggest(this.app, search.inputEl, get_store_value(tagsStore));
+ search.onChange((value) => __async(this, null, function* () {
+ if (!value.match(TAG_REGEX) || value.match(NUMBER_REGEX) || value.contains(" ") || value.contains("#")) {
+ this.setValidationError(search, t("invalid_tag"));
+ return;
+ }
+ tagValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ if (!tagValue.match(TAG_REGEX) || tagValue.match(NUMBER_REGEX) || tagValue.contains(" ") || tagValue.contains("#")) {
+ this.setValidationError(tagComponent, t("invalid_tag"));
+ return;
+ }
+ this.tags.push(tagValue);
+ this.display();
+ });
+ });
+ newTag.controlEl.addClass("rss-setting-input");
+ const buttonEl = contentEl.createSpan("actionButtons");
+ new import_obsidian8.Setting(buttonEl).addExtraButton((btn) => btn.setTooltip(t("save")).setIcon("checkmark").onClick(() => __async(this, null, function* () {
+ this.close();
+ })));
+ }
+ onClose() {
+ const { contentEl } = this;
+ contentEl.empty();
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ yield this.display();
+ });
+ }
+};
+
+// src/actions/Action.ts
+var _Action = class {
+ constructor(name, icon, processor) {
+ this.name = name;
+ this.icon = icon;
+ this.processor = processor;
+ }
+};
+var Action = _Action;
+Action.CREATE_NOTE = new _Action(t("create_note"), "create-new", (plugin, item) => {
+ return createNewNote(plugin, item);
+});
+Action.PASTE = new _Action(t("paste_to_note"), "paste", (plugin, item) => {
+ return pasteToNote(plugin, item);
+});
+Action.COPY = new _Action(t("copy_to_clipboard"), "documents", (_, item) => {
+ return copy((0, import_obsidian9.htmlToMarkdown)(item.content));
+});
+Action.OPEN = new _Action(t("open_browser"), "open-elsewhere-glyph", (_, item) => {
+ openInBrowser(item);
+ return Promise.resolve();
+});
+Action.TAGS = new _Action(t("edit_tags"), "tag-glyph", (plugin, item) => {
+ const modal = new TagModal(plugin, item.tags);
+ modal.onClose = () => __async(_Action, null, function* () {
+ item.tags = modal.tags;
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ });
+ modal.open();
+ return Promise.resolve();
+});
+Action.READ = new _Action(t("mark_as_read_unread"), "eye", (plugin, item) => __async(_Action, null, function* () {
+ if (item.read) {
+ item.read = false;
+ new import_obsidian9.Notice(t("marked_as_unread"));
+ } else {
+ item.read = true;
+ new import_obsidian9.Notice(t("marked_as_read"));
+ }
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ return Promise.resolve();
+}));
+Action.FAVORITE = new _Action(t("mark_as_favorite_remove"), "star", (plugin, item) => __async(_Action, null, function* () {
+ if (item.favorite) {
+ item.favorite = false;
+ new import_obsidian9.Notice(t("removed_from_favorites"));
+ } else {
+ item.favorite = true;
+ new import_obsidian9.Notice(t("added_to_favorites"));
+ }
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ return Promise.resolve();
+}));
+Action.actions = Array.of(_Action.FAVORITE, _Action.READ, _Action.TAGS, _Action.CREATE_NOTE, _Action.PASTE, _Action.COPY, _Action.OPEN);
+
+// src/modals/ItemModal.ts
+var ItemModal = class extends import_obsidian10.Modal {
+ constructor(plugin, item, items, save = true) {
+ super(plugin.app);
+ this.plugin = plugin;
+ this.items = items;
+ this.item = item;
+ this.save = save;
+ if (this.save) {
+ this.item.read = true;
+ const feedContents = this.plugin.settings.items;
+ this.plugin.writeFeedContent(() => {
+ return feedContents;
+ });
+ if (!this.plugin.settings) {
+ return;
+ }
+ if (this.plugin.settings.hotkeys.read) {
+ this.scope.register([], this.plugin.settings.hotkeys.read, () => {
+ this.markAsRead();
+ });
+ }
+ if (this.plugin.settings.hotkeys.favorite) {
+ this.scope.register([], this.plugin.settings.hotkeys.favorite, () => {
+ this.markAsFavorite();
+ });
+ }
+ if (this.plugin.settings.hotkeys.tags) {
+ this.scope.register([], this.plugin.settings.hotkeys.tags, () => {
+ Action.TAGS.processor(this.plugin, this.item);
+ });
+ }
+ }
+ if (this.plugin.settings.hotkeys.create) {
+ this.scope.register([], this.plugin.settings.hotkeys.create, () => {
+ Action.CREATE_NOTE.processor(this.plugin, this.item);
+ });
+ }
+ if (this.plugin.settings.hotkeys.paste) {
+ this.scope.register([], this.plugin.settings.hotkeys.paste, () => {
+ Action.PASTE.processor(this.plugin, this.item);
+ });
+ }
+ if (this.plugin.settings.hotkeys.copy) {
+ this.scope.register([], this.plugin.settings.hotkeys.copy, () => {
+ Action.COPY.processor(this.plugin, this.item);
+ });
+ }
+ if (this.plugin.settings.hotkeys.open) {
+ this.scope.register([], this.plugin.settings.hotkeys.open, () => {
+ Action.OPEN.processor(this.plugin, this.item);
+ });
+ }
+ if (this.plugin.settings.hotkeys.next) {
+ this.scope.register([], this.plugin.settings.hotkeys.next, () => {
+ this.next();
+ });
+ }
+ if (this.plugin.settings.hotkeys.previous) {
+ this.scope.register([], this.plugin.settings.hotkeys.previous, () => {
+ this.previous();
+ });
+ }
+ if (this.app.plugins.plugins["obsidian-tts"] && this.plugin.settings.hotkeys.tts) {
+ this.scope.register([], this.plugin.settings.hotkeys.tts, () => {
+ const tts = this.app.plugins.plugins["obsidian-tts"].ttsService;
+ if (tts.isSpeaking()) {
+ if (tts.isPaused()) {
+ tts.resume();
+ } else {
+ tts.pause();
+ }
+ return;
+ }
+ const content = (0, import_obsidian10.htmlToMarkdown)(this.item.content);
+ tts.say(this.item.title, content, this.item.language);
+ });
+ }
+ }
+ previous() {
+ let index = this.items.findIndex((item2) => {
+ return item2 === this.item;
+ });
+ index++;
+ const item = this.items[index];
+ if (item !== void 0) {
+ this.close();
+ new ItemModal(this.plugin, item, this.items, this.save).open();
+ }
+ }
+ next() {
+ let index = this.items.findIndex((item2) => {
+ return item2 === this.item;
+ });
+ index--;
+ const item = this.items[index];
+ if (item !== void 0) {
+ this.close();
+ new ItemModal(this.plugin, item, this.items, this.save).open();
+ }
+ }
+ markAsFavorite() {
+ return __async(this, null, function* () {
+ yield Action.FAVORITE.processor(this.plugin, this.item);
+ this.favoriteButton.setIcon(this.item.favorite ? "star-glyph" : "star");
+ this.favoriteButton.setTooltip(this.item.favorite ? t("remove_from_favorites") : t("mark_as_favorite"));
+ });
+ }
+ markAsRead() {
+ return __async(this, null, function* () {
+ yield Action.READ.processor(this.plugin, this.item);
+ this.readButton.setIcon(this.item.read ? "eye-off" : "eye");
+ this.readButton.setTooltip(this.item.read ? t("mark_as_unread") : t("mark_as_unread"));
+ });
+ }
+ display() {
+ return __async(this, null, function* () {
+ this.modalEl.addClass("rss-modal");
+ const { contentEl } = this;
+ contentEl.empty();
+ contentEl.style.height = "100%";
+ contentEl.style.overflowY = "hidden";
+ const topButtons = contentEl.createDiv("topButtons");
+ let actions = Array.of(Action.CREATE_NOTE, Action.PASTE, Action.COPY, Action.OPEN);
+ if (this.save) {
+ this.readButton = new import_obsidian10.ButtonComponent(topButtons).setIcon(this.item.read ? "eye-off" : "eye").setTooltip(this.item.read ? t("mark_as_unread") : t("mark_as_read")).onClick(() => __async(this, null, function* () {
+ yield this.markAsRead();
+ }));
+ this.readButton.buttonEl.setAttribute("tabindex", "-1");
+ this.readButton.buttonEl.addClass("rss-button");
+ this.favoriteButton = new import_obsidian10.ButtonComponent(topButtons).setIcon(this.item.favorite ? "star-glyph" : "star").setTooltip(this.item.favorite ? t("remove_from_favorites") : t("mark_as_favorite")).onClick(() => __async(this, null, function* () {
+ yield this.markAsFavorite();
+ }));
+ this.favoriteButton.buttonEl.setAttribute("tabindex", "-1");
+ this.favoriteButton.buttonEl.addClass("rss-button");
+ actions = Array.of(Action.TAGS, ...actions);
+ }
+ actions.forEach((action) => {
+ const button = new import_obsidian10.ButtonComponent(topButtons).setIcon(action.icon).setTooltip(action.name).onClick(() => __async(this, null, function* () {
+ yield action.processor(this.plugin, this.item);
+ }));
+ button.buttonEl.setAttribute("tabindex", "-1");
+ button.buttonEl.addClass("rss-button");
+ });
+ if (this.app.plugins.plugins["obsidian-tts"]) {
+ const ttsButton = new import_obsidian10.ButtonComponent(topButtons).setIcon("headphones").setTooltip(t("read_article_tts")).onClick(() => __async(this, null, function* () {
+ const content2 = (0, import_obsidian10.htmlToMarkdown)(this.item.content);
+ yield this.app.plugins.plugins["obsidian-tts"].ttsService.say(this.item.title, content2, this.item.language);
+ }));
+ ttsButton.buttonEl.addClass("rss-button");
+ }
+ const prevButton = new import_obsidian10.ButtonComponent(topButtons).setIcon("left-arrow-with-tail").setTooltip(t("previous")).onClick(() => {
+ this.previous();
+ });
+ prevButton.buttonEl.addClass("rss-button");
+ const nextButton = new import_obsidian10.ButtonComponent(topButtons).setIcon("right-arrow-with-tail").setTooltip(t("next")).onClick(() => {
+ this.next();
+ });
+ nextButton.buttonEl.addClass("rss-button");
+ const title = contentEl.createEl("h1", "rss-title");
+ title.addClass("rss-selectable");
+ title.setText(this.item.title);
+ const subtitle = contentEl.createEl("h3", "rss-subtitle");
+ subtitle.addClass("rss-selectable");
+ if (this.item.creator) {
+ subtitle.appendText(this.item.creator);
+ }
+ if (this.item.pubDate) {
+ subtitle.appendText(" - " + window.moment(this.item.pubDate).format(this.plugin.settings.dateFormat));
+ }
+ const tagEl = contentEl.createSpan("tags");
+ this.item.tags.forEach((tag) => {
+ const tagA = tagEl.createEl("a");
+ tagA.setText(tag);
+ tagA.addClass("tag", "rss-tag");
+ });
+ const content = contentEl.createDiv("rss-content");
+ content.addClass("rss-scrollable-content", "rss-selectable");
+ if (this.item.enclosure && this.plugin.settings.displayMedia) {
+ if (this.item.enclosureType.toLowerCase().contains("audio")) {
+ const audio = content.createEl("audio", { attr: { controls: "controls" } });
+ audio.createEl("source", { attr: { src: this.item.enclosure, type: this.item.enclosureType } });
+ }
+ if (this.item.enclosureType.toLowerCase().contains("video")) {
+ const video = content.createEl("video", { attr: { controls: "controls", width: "100%", height: "100%" } });
+ video.createEl("source", { attr: { src: this.item.enclosure, type: this.item.enclosureType } });
+ }
+ if (this.item.enclosure && this.item.id.startsWith("yt:")) {
+ content.createEl("iframe", {
+ attr: {
+ type: "text/html",
+ src: "https://www.youtube.com/embed/" + this.item.enclosure,
+ width: "100%",
+ height: "100%",
+ allowFullscreen: "true"
+ }
+ });
+ }
+ }
+ if (this.item.content) {
+ const markdown = "---\n---" + rssToMd(this.plugin, this.item.content);
+ yield import_obsidian10.MarkdownRenderer.renderMarkdown(markdown, content, "", this.plugin);
+ this.item.highlights.forEach((highlight) => {
+ if (content.innerHTML.includes(highlight)) {
+ const newNode = contentEl.createEl("mark");
+ newNode.innerHTML = highlight;
+ content.innerHTML = content.innerHTML.replace(highlight, newNode.outerHTML);
+ newNode.remove();
+ } else {
+ console.log("Highlight not included");
+ console.log(highlight);
+ }
+ });
+ content.addEventListener("contextmenu", (event) => {
+ event.preventDefault();
+ const selection = document.getSelection();
+ const range = selection.getRangeAt(0);
+ const div = contentEl.createDiv();
+ const htmlContent = range.cloneContents();
+ const html = htmlContent.cloneNode(true);
+ div.appendChild(html);
+ const selected = div.innerHTML;
+ div.remove();
+ const menu = new import_obsidian10.Menu(this.app);
+ let previousHighlight;
+ if (this.item.highlights.includes(range.startContainer.parentElement.innerHTML)) {
+ previousHighlight = range.startContainer.parentElement;
+ }
+ if (this.item.highlights.includes(range.startContainer.parentElement.parentElement.innerHTML)) {
+ previousHighlight = range.startContainer.parentElement.parentElement;
+ }
+ if (previousHighlight) {
+ menu.addItem((item) => {
+ item.setIcon("highlight-glyph").setTitle(t("highlight_remove")).onClick(() => __async(this, null, function* () {
+ const replacement = contentEl.createSpan();
+ replacement.innerHTML = previousHighlight.innerHTML;
+ previousHighlight.replaceWith(replacement);
+ this.item.highlights.remove(previousHighlight.innerHTML);
+ const feedContents = this.plugin.settings.items;
+ yield this.plugin.writeFeedContent(() => {
+ return feedContents;
+ });
+ }));
+ });
+ } else if (!this.item.highlights.includes(selected) && selected.length > 0) {
+ menu.addItem((item) => {
+ item.setIcon("highlight-glyph").setTitle(t("highlight")).onClick(() => __async(this, null, function* () {
+ const newNode = contentEl.createEl("mark");
+ newNode.innerHTML = selected;
+ range.deleteContents();
+ range.insertNode(newNode);
+ this.item.highlights.push(selected);
+ const feedContents = this.plugin.settings.items;
+ yield this.plugin.writeFeedContent(() => {
+ return feedContents;
+ });
+ this.removeDanglingElements(contentEl);
+ this.removeDanglingElements(contentEl);
+ }));
+ });
+ }
+ if (selected.length > 0) {
+ menu.addItem((item) => {
+ item.setIcon("documents").setTitle(t("copy_to_clipboard")).onClick(() => __async(this, null, function* () {
+ yield copy(selection.toString());
+ }));
+ });
+ if (this.app.plugins.plugins["obsidian-tts"]) {
+ menu.addItem((item) => {
+ item.setIcon("headphones").setTitle(t("read_article_tts")).onClick(() => {
+ const tts = this.app.plugins.plugins["obsidian-tts"].ttsService;
+ tts.say("", selection.toString());
+ });
+ });
+ }
+ }
+ menu.showAtMouseEvent(event);
+ });
+ }
+ });
+ }
+ onClose() {
+ return __async(this, null, function* () {
+ const { contentEl } = this;
+ contentEl.empty();
+ const feedContents = this.plugin.settings.items;
+ yield this.plugin.writeFeedContent(() => {
+ return feedContents;
+ });
+ });
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ yield this.display();
+ });
+ }
+ removeDanglingElements(el) {
+ const lists = el.querySelectorAll("li, a, div, p, span");
+ for (let i = 0; i < lists.length; i++) {
+ const listEL = lists.item(i);
+ if (listEL.innerHTML === "") {
+ listEL.remove();
+ }
+ }
+ }
+};
+
+// src/view/ItemTitle.svelte
+var import_obsidian11 = __toModule(require("obsidian"));
+function create_if_block_1(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({ props: { iconName: "star" } });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block3(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({ props: { iconName: "document" } });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_fragment3(ctx) {
+ let t0;
+ let t1;
+ let a;
+ let t2_value = ctx[1].title + "";
+ let t2;
+ let current;
+ let mounted;
+ let dispose;
+ let if_block0 = ctx[1].favorite && create_if_block_1(ctx);
+ let if_block1 = ctx[1].created && create_if_block3(ctx);
+ return {
+ c() {
+ if (if_block0)
+ if_block0.c();
+ t0 = space();
+ if (if_block1)
+ if_block1.c();
+ t1 = space();
+ a = element("a");
+ t2 = text(t2_value);
+ },
+ m(target, anchor) {
+ if (if_block0)
+ if_block0.m(target, anchor);
+ insert(target, t0, anchor);
+ if (if_block1)
+ if_block1.m(target, anchor);
+ insert(target, t1, anchor);
+ insert(target, a, anchor);
+ append(a, t2);
+ current = true;
+ if (!mounted) {
+ dispose = [
+ listen(a, "click", ctx[4]),
+ listen(a, "contextmenu", ctx[3])
+ ];
+ mounted = true;
+ }
+ },
+ p(ctx2, [dirty]) {
+ if (ctx2[1].favorite) {
+ if (if_block0) {
+ if (dirty & 2) {
+ transition_in(if_block0, 1);
+ }
+ } else {
+ if_block0 = create_if_block_1(ctx2);
+ if_block0.c();
+ transition_in(if_block0, 1);
+ if_block0.m(t0.parentNode, t0);
+ }
+ } else if (if_block0) {
+ group_outros();
+ transition_out(if_block0, 1, 1, () => {
+ if_block0 = null;
+ });
+ check_outros();
+ }
+ if (ctx2[1].created) {
+ if (if_block1) {
+ if (dirty & 2) {
+ transition_in(if_block1, 1);
+ }
+ } else {
+ if_block1 = create_if_block3(ctx2);
+ if_block1.c();
+ transition_in(if_block1, 1);
+ if_block1.m(t1.parentNode, t1);
+ }
+ } else if (if_block1) {
+ group_outros();
+ transition_out(if_block1, 1, 1, () => {
+ if_block1 = null;
+ });
+ check_outros();
+ }
+ if ((!current || dirty & 2) && t2_value !== (t2_value = ctx2[1].title + ""))
+ set_data(t2, t2_value);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block1);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block1);
+ current = false;
+ },
+ d(detaching) {
+ if (if_block0)
+ if_block0.d(detaching);
+ if (detaching)
+ detach(t0);
+ if (if_block1)
+ if_block1.d(detaching);
+ if (detaching)
+ detach(t1);
+ if (detaching)
+ detach(a);
+ mounted = false;
+ run_all(dispose);
+ }
+ };
+}
+function instance3($$self, $$props, $$invalidate) {
+ let { plugin = null } = $$props;
+ let { item = null } = $$props;
+ let { items = null } = $$props;
+ function openMenu(e) {
+ return __async(this, null, function* () {
+ if (e.ctrlKey && e.altKey) {
+ openInBrowser(item);
+ return;
+ }
+ if (e.ctrlKey) {
+ yield createNewNote(plugin, item);
+ return;
+ }
+ if (e.altKey) {
+ yield pasteToNote(plugin, item);
+ return;
+ }
+ const menu = new import_obsidian11.Menu(plugin.app);
+ Action.actions.forEach((action) => {
+ menu.addItem((menuItem) => {
+ menuItem.setIcon(action.icon).setTitle(action.name).onClick(() => __async(this, null, function* () {
+ yield action.processor(plugin, item);
+ }));
+ });
+ });
+ menu.showAtPosition({ x: e.x, y: e.y });
+ });
+ }
+ const click_handler = () => {
+ new ItemModal(plugin, item, items).open();
+ };
+ $$self.$$set = ($$props2) => {
+ if ("plugin" in $$props2)
+ $$invalidate(0, plugin = $$props2.plugin);
+ if ("item" in $$props2)
+ $$invalidate(1, item = $$props2.item);
+ if ("items" in $$props2)
+ $$invalidate(2, items = $$props2.items);
+ };
+ return [plugin, item, items, openMenu, click_handler];
+}
+var ItemTitle = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance3, create_fragment3, safe_not_equal, { plugin: 0, item: 1, items: 2 });
+ }
+};
+var ItemTitle_default = ItemTitle;
+
+// src/view/MarkdownContent.svelte
+var import_obsidian12 = __toModule(require("obsidian"));
+function create_if_block4(ctx) {
+ let p;
+ let html_action;
+ let mounted;
+ let dispose;
+ return {
+ c() {
+ p = element("p");
+ },
+ m(target, anchor) {
+ insert(target, p, anchor);
+ if (!mounted) {
+ dispose = action_destroyer(html_action = ctx[1].call(null, p, ctx[0]));
+ mounted = true;
+ }
+ },
+ p(ctx2, dirty) {
+ if (html_action && is_function(html_action.update) && dirty & 1)
+ html_action.update.call(null, ctx2[0]);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(p);
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function create_fragment4(ctx) {
+ let if_block_anchor;
+ let if_block = ctx[0].length > 0 && create_if_block4(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ },
+ p(ctx2, [dirty]) {
+ if (ctx2[0].length > 0) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ } else {
+ if_block = create_if_block4(ctx2);
+ if_block.c();
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ if_block.d(1);
+ if_block = null;
+ }
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function instance4($$self, $$props, $$invalidate) {
+ let { content = "" } = $$props;
+ let { plugin } = $$props;
+ const html = (node, content2) => {
+ import_obsidian12.MarkdownRenderer.renderMarkdown((0, import_obsidian12.htmlToMarkdown)(content2), node, "", plugin);
+ };
+ $$self.$$set = ($$props2) => {
+ if ("content" in $$props2)
+ $$invalidate(0, content = $$props2.content);
+ if ("plugin" in $$props2)
+ $$invalidate(2, plugin = $$props2.plugin);
+ };
+ return [content, html, plugin];
+}
+var MarkdownContent = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance4, create_fragment4, safe_not_equal, { content: 0, plugin: 2 });
+ }
+};
+var MarkdownContent_default = MarkdownContent;
+
+// src/view/ItemView.svelte
+function get_each_context_1(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[6] = list[i];
+ return child_ctx;
+}
+function get_each_context(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[6] = list[i];
+ return child_ctx;
+}
+function create_if_block5(ctx) {
+ let div;
+ let current_block_type_index;
+ let if_block;
+ let div_class_value;
+ let current;
+ const if_block_creators = [create_if_block_12, create_if_block_5];
+ const if_blocks = [];
+ function select_block_type(ctx2, dirty) {
+ if (ctx2[4].displayStyle === "list")
+ return 0;
+ if (ctx2[4].displayStyle === "cards")
+ return 1;
+ return -1;
+ }
+ if (~(current_block_type_index = select_block_type(ctx, -1))) {
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ }
+ return {
+ c() {
+ div = element("div");
+ if (if_block)
+ if_block.c();
+ attr(div, "class", div_class_value = "is-clickable rss-tooltip rss-feed-item " + (ctx[1].read ? "rss-read" : "rss-not-read"));
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ if (~current_block_type_index) {
+ if_blocks[current_block_type_index].m(div, null);
+ }
+ current = true;
+ },
+ p(ctx2, dirty) {
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type(ctx2, dirty);
+ if (current_block_type_index === previous_block_index) {
+ if (~current_block_type_index) {
+ if_blocks[current_block_type_index].p(ctx2, dirty);
+ }
+ } else {
+ if (if_block) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ }
+ if (~current_block_type_index) {
+ if_block = if_blocks[current_block_type_index];
+ if (!if_block) {
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
+ if_block.c();
+ } else {
+ if_block.p(ctx2, dirty);
+ }
+ transition_in(if_block, 1);
+ if_block.m(div, null);
+ } else {
+ if_block = null;
+ }
+ }
+ if (!current || dirty & 2 && div_class_value !== (div_class_value = "is-clickable rss-tooltip rss-feed-item " + (ctx2[1].read ? "rss-read" : "rss-not-read"))) {
+ attr(div, "class", div_class_value);
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div);
+ if (~current_block_type_index) {
+ if_blocks[current_block_type_index].d();
+ }
+ }
+ };
+}
+function create_if_block_5(ctx) {
+ let div3;
+ let span;
+ let itemtitle;
+ let t0;
+ let t1;
+ let div2;
+ let div0;
+ let show_if = ctx[1].image && !ctx[1].image.includes(".mp3");
+ let t2;
+ let div1;
+ let current;
+ itemtitle = new ItemTitle_default({
+ props: {
+ plugin: ctx[0],
+ item: ctx[1],
+ items: ctx[2]
+ }
+ });
+ itemtitle.$on("mouseover", ctx[5]);
+ itemtitle.$on("mouseleave", ctx[5]);
+ itemtitle.$on("focus", ctx[5]);
+ let if_block0 = ctx[1].tags.length > 0 && create_if_block_8(ctx);
+ let if_block1 = show_if && create_if_block_7(ctx);
+ let if_block2 = ctx[1].description && create_if_block_6(ctx);
+ return {
+ c() {
+ div3 = element("div");
+ span = element("span");
+ create_component(itemtitle.$$.fragment);
+ t0 = space();
+ if (if_block0)
+ if_block0.c();
+ t1 = space();
+ div2 = element("div");
+ div0 = element("div");
+ if (if_block1)
+ if_block1.c();
+ t2 = space();
+ div1 = element("div");
+ if (if_block2)
+ if_block2.c();
+ attr(span, "class", "rss-item-title");
+ attr(div0, "class", "rss-item-image");
+ attr(div1, "class", "rss-item-text");
+ attr(div2, "class", "rss-card-items");
+ attr(div3, "class", "rss-card is-clickable");
+ },
+ m(target, anchor) {
+ insert(target, div3, anchor);
+ append(div3, span);
+ mount_component(itemtitle, span, null);
+ append(span, t0);
+ if (if_block0)
+ if_block0.m(span, null);
+ append(div3, t1);
+ append(div3, div2);
+ append(div2, div0);
+ if (if_block1)
+ if_block1.m(div0, null);
+ append(div2, t2);
+ append(div2, div1);
+ if (if_block2)
+ if_block2.m(div1, null);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const itemtitle_changes = {};
+ if (dirty & 1)
+ itemtitle_changes.plugin = ctx2[0];
+ if (dirty & 2)
+ itemtitle_changes.item = ctx2[1];
+ if (dirty & 4)
+ itemtitle_changes.items = ctx2[2];
+ itemtitle.$set(itemtitle_changes);
+ if (ctx2[1].tags.length > 0) {
+ if (if_block0) {
+ if_block0.p(ctx2, dirty);
+ } else {
+ if_block0 = create_if_block_8(ctx2);
+ if_block0.c();
+ if_block0.m(span, null);
+ }
+ } else if (if_block0) {
+ if_block0.d(1);
+ if_block0 = null;
+ }
+ if (dirty & 2)
+ show_if = ctx2[1].image && !ctx2[1].image.includes(".mp3");
+ if (show_if) {
+ if (if_block1) {
+ if_block1.p(ctx2, dirty);
+ } else {
+ if_block1 = create_if_block_7(ctx2);
+ if_block1.c();
+ if_block1.m(div0, null);
+ }
+ } else if (if_block1) {
+ if_block1.d(1);
+ if_block1 = null;
+ }
+ if (ctx2[1].description) {
+ if (if_block2) {
+ if_block2.p(ctx2, dirty);
+ if (dirty & 2) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_6(ctx2);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div1, null);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(itemtitle.$$.fragment, local);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(itemtitle.$$.fragment, local);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div3);
+ destroy_component(itemtitle);
+ if (if_block0)
+ if_block0.d();
+ if (if_block1)
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ }
+ };
+}
+function create_if_block_12(ctx) {
+ let itemtitle;
+ let t0;
+ let t1;
+ let if_block1_anchor;
+ let current;
+ itemtitle = new ItemTitle_default({
+ props: {
+ plugin: ctx[0],
+ item: ctx[1],
+ items: ctx[2]
+ }
+ });
+ itemtitle.$on("mouseover", ctx[5]);
+ itemtitle.$on("mouseleave", ctx[5]);
+ itemtitle.$on("focus", ctx[5]);
+ let if_block0 = ctx[1].tags.length > 0 && create_if_block_4(ctx);
+ let if_block1 = ctx[3] && create_if_block_2(ctx);
+ return {
+ c() {
+ create_component(itemtitle.$$.fragment);
+ t0 = space();
+ if (if_block0)
+ if_block0.c();
+ t1 = space();
+ if (if_block1)
+ if_block1.c();
+ if_block1_anchor = empty();
+ },
+ m(target, anchor) {
+ mount_component(itemtitle, target, anchor);
+ insert(target, t0, anchor);
+ if (if_block0)
+ if_block0.m(target, anchor);
+ insert(target, t1, anchor);
+ if (if_block1)
+ if_block1.m(target, anchor);
+ insert(target, if_block1_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const itemtitle_changes = {};
+ if (dirty & 1)
+ itemtitle_changes.plugin = ctx2[0];
+ if (dirty & 2)
+ itemtitle_changes.item = ctx2[1];
+ if (dirty & 4)
+ itemtitle_changes.items = ctx2[2];
+ itemtitle.$set(itemtitle_changes);
+ if (ctx2[1].tags.length > 0) {
+ if (if_block0) {
+ if_block0.p(ctx2, dirty);
+ } else {
+ if_block0 = create_if_block_4(ctx2);
+ if_block0.c();
+ if_block0.m(t1.parentNode, t1);
+ }
+ } else if (if_block0) {
+ if_block0.d(1);
+ if_block0 = null;
+ }
+ if (ctx2[3]) {
+ if (if_block1) {
+ if_block1.p(ctx2, dirty);
+ if (dirty & 8) {
+ transition_in(if_block1, 1);
+ }
+ } else {
+ if_block1 = create_if_block_2(ctx2);
+ if_block1.c();
+ transition_in(if_block1, 1);
+ if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
+ }
+ } else if (if_block1) {
+ group_outros();
+ transition_out(if_block1, 1, 1, () => {
+ if_block1 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(itemtitle.$$.fragment, local);
+ transition_in(if_block1);
+ current = true;
+ },
+ o(local) {
+ transition_out(itemtitle.$$.fragment, local);
+ transition_out(if_block1);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(itemtitle, detaching);
+ if (detaching)
+ detach(t0);
+ if (if_block0)
+ if_block0.d(detaching);
+ if (detaching)
+ detach(t1);
+ if (if_block1)
+ if_block1.d(detaching);
+ if (detaching)
+ detach(if_block1_anchor);
+ }
+ };
+}
+function create_if_block_8(ctx) {
+ let span;
+ let each_value_1 = ctx[1].tags;
+ let each_blocks = [];
+ for (let i = 0; i < each_value_1.length; i += 1) {
+ each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
+ }
+ return {
+ c() {
+ span = element("span");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(span, null);
+ }
+ },
+ p(ctx2, dirty) {
+ if (dirty & 2) {
+ each_value_1 = ctx2[1].tags;
+ let i;
+ for (i = 0; i < each_value_1.length; i += 1) {
+ const child_ctx = get_each_context_1(ctx2, each_value_1, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ } else {
+ each_blocks[i] = create_each_block_1(child_ctx);
+ each_blocks[i].c();
+ each_blocks[i].m(span, null);
+ }
+ }
+ for (; i < each_blocks.length; i += 1) {
+ each_blocks[i].d(1);
+ }
+ each_blocks.length = each_value_1.length;
+ }
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_each_block_1(ctx) {
+ let t0;
+ let a;
+ let t1_value = ctx[6] + "";
+ let t1;
+ let a_href_value;
+ return {
+ c() {
+ t0 = text("\xA0");
+ a = element("a");
+ t1 = text(t1_value);
+ attr(a, "class", "tag rss-tag");
+ attr(a, "href", a_href_value = "#" + ctx[6]);
+ },
+ m(target, anchor) {
+ insert(target, t0, anchor);
+ insert(target, a, anchor);
+ append(a, t1);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 2 && t1_value !== (t1_value = ctx2[6] + ""))
+ set_data(t1, t1_value);
+ if (dirty & 2 && a_href_value !== (a_href_value = "#" + ctx2[6])) {
+ attr(a, "href", a_href_value);
+ }
+ },
+ d(detaching) {
+ if (detaching)
+ detach(t0);
+ if (detaching)
+ detach(a);
+ }
+ };
+}
+function create_if_block_7(ctx) {
+ let img;
+ let img_src_value;
+ return {
+ c() {
+ img = element("img");
+ if (!src_url_equal(img.src, img_src_value = ctx[1].image))
+ attr(img, "src", img_src_value);
+ attr(img, "width", "250em");
+ attr(img, "alt", "Article");
+ },
+ m(target, anchor) {
+ insert(target, img, anchor);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 2 && !src_url_equal(img.src, img_src_value = ctx2[1].image)) {
+ attr(img, "src", img_src_value);
+ }
+ },
+ d(detaching) {
+ if (detaching)
+ detach(img);
+ }
+ };
+}
+function create_if_block_6(ctx) {
+ let markdowncontent;
+ let current;
+ markdowncontent = new MarkdownContent_default({
+ props: { content: ctx[1].description }
+ });
+ return {
+ c() {
+ create_component(markdowncontent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(markdowncontent, target, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const markdowncontent_changes = {};
+ if (dirty & 2)
+ markdowncontent_changes.content = ctx2[1].description;
+ markdowncontent.$set(markdowncontent_changes);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(markdowncontent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(markdowncontent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(markdowncontent, detaching);
+ }
+ };
+}
+function create_if_block_4(ctx) {
+ let span;
+ let each_value = ctx[1].tags;
+ let each_blocks = [];
+ for (let i = 0; i < each_value.length; i += 1) {
+ each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
+ }
+ return {
+ c() {
+ span = element("span");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(span, null);
+ }
+ },
+ p(ctx2, dirty) {
+ if (dirty & 2) {
+ each_value = ctx2[1].tags;
+ let i;
+ for (i = 0; i < each_value.length; i += 1) {
+ const child_ctx = get_each_context(ctx2, each_value, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ } else {
+ each_blocks[i] = create_each_block(child_ctx);
+ each_blocks[i].c();
+ each_blocks[i].m(span, null);
+ }
+ }
+ for (; i < each_blocks.length; i += 1) {
+ each_blocks[i].d(1);
+ }
+ each_blocks.length = each_value.length;
+ }
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_each_block(ctx) {
+ let t0;
+ let a;
+ let t1_value = ctx[6] + "";
+ let t1;
+ let a_href_value;
+ return {
+ c() {
+ t0 = text("\xA0");
+ a = element("a");
+ t1 = text(t1_value);
+ attr(a, "class", "tag rss-tag");
+ attr(a, "href", a_href_value = "#" + ctx[6]);
+ },
+ m(target, anchor) {
+ insert(target, t0, anchor);
+ insert(target, a, anchor);
+ append(a, t1);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 2 && t1_value !== (t1_value = ctx2[6] + ""))
+ set_data(t1, t1_value);
+ if (dirty & 2 && a_href_value !== (a_href_value = "#" + ctx2[6])) {
+ attr(a, "href", a_href_value);
+ }
+ },
+ d(detaching) {
+ if (detaching)
+ detach(t0);
+ if (detaching)
+ detach(a);
+ }
+ };
+}
+function create_if_block_2(ctx) {
+ let if_block_anchor;
+ let current;
+ let if_block = ctx[1].description !== ctx[1].content && create_if_block_3(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (ctx2[1].description !== ctx2[1].content) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ if (dirty & 2) {
+ transition_in(if_block, 1);
+ }
+ } else {
+ if_block = create_if_block_3(ctx2);
+ if_block.c();
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ group_outros();
+ transition_out(if_block, 1, 1, () => {
+ if_block = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function create_if_block_3(ctx) {
+ let htmltooltip;
+ let current;
+ htmltooltip = new HtmlTooltip_default({
+ props: { content: ctx[1].description }
+ });
+ return {
+ c() {
+ create_component(htmltooltip.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(htmltooltip, target, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const htmltooltip_changes = {};
+ if (dirty & 2)
+ htmltooltip_changes.content = ctx2[1].description;
+ htmltooltip.$set(htmltooltip_changes);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(htmltooltip.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(htmltooltip.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(htmltooltip, detaching);
+ }
+ };
+}
+function create_fragment5(ctx) {
+ let if_block_anchor;
+ let current;
+ let if_block = ctx[1] && create_if_block5(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, [dirty]) {
+ if (ctx2[1]) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ if (dirty & 2) {
+ transition_in(if_block, 1);
+ }
+ } else {
+ if_block = create_if_block5(ctx2);
+ if_block.c();
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ group_outros();
+ transition_out(if_block, 1, 1, () => {
+ if_block = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function instance5($$self, $$props, $$invalidate) {
+ let $settingsStore;
+ component_subscribe($$self, settingsStore, ($$value) => $$invalidate(4, $settingsStore = $$value));
+ let { plugin = null } = $$props;
+ let { item = null } = $$props;
+ let { items = null } = $$props;
+ let hover = false;
+ function toggleHover() {
+ $$invalidate(3, hover = !hover);
+ }
+ $$self.$$set = ($$props2) => {
+ if ("plugin" in $$props2)
+ $$invalidate(0, plugin = $$props2.plugin);
+ if ("item" in $$props2)
+ $$invalidate(1, item = $$props2.item);
+ if ("items" in $$props2)
+ $$invalidate(2, items = $$props2.items);
+ };
+ return [plugin, item, items, hover, $settingsStore, toggleHover];
+}
+var ItemView = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance5, create_fragment5, safe_not_equal, { plugin: 0, item: 1, items: 2 });
+ }
+};
+var ItemView_default = ItemView;
+
+// src/view/FeedView.svelte
+var import_obsidian13 = __toModule(require("obsidian"));
+function get_each_context2(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[6] = list[i];
+ return child_ctx;
+}
+function create_else_block(ctx) {
+ let div3;
+ let div1;
+ let div0;
+ let show_if_1;
+ let current_block_type_index;
+ let if_block0;
+ let t0;
+ let span0;
+ let t1_value = ctx[0].name + "";
+ let t1;
+ let t2;
+ let t3;
+ let span1;
+ let t4_value = ctx[0].items.filter(func).length + "";
+ let t4;
+ let div1_class_value;
+ let t5;
+ let div2;
+ let show_if = !ctx[2].contains(ctx[0].name);
+ let current;
+ let mounted;
+ let dispose;
+ const if_block_creators = [create_if_block_32, create_else_block_1];
+ const if_blocks = [];
+ function select_block_type_1(ctx2, dirty) {
+ if (dirty & 5)
+ show_if_1 = null;
+ if (show_if_1 == null)
+ show_if_1 = !!ctx2[2].contains(ctx2[0].name);
+ if (show_if_1)
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type_1(ctx, -1);
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ let if_block1 = ctx[0].image && create_if_block_22(ctx);
+ let if_block2 = show_if && create_if_block_13(ctx);
+ return {
+ c() {
+ div3 = element("div");
+ div1 = element("div");
+ div0 = element("div");
+ if_block0.c();
+ t0 = space();
+ span0 = element("span");
+ t1 = text(t1_value);
+ t2 = space();
+ if (if_block1)
+ if_block1.c();
+ t3 = space();
+ span1 = element("span");
+ t4 = text(t4_value);
+ t5 = space();
+ div2 = element("div");
+ if (if_block2)
+ if_block2.c();
+ attr(div0, "class", "rss-feed-title");
+ set_style(div0, "overflow", "hidden");
+ attr(span1, "class", "rss-item-count");
+ attr(div1, "class", div1_class_value = "" + ((ctx[2].contains(ctx[0].name) ? "is-collapsed" : "") + " tree-item-self is-clickable"));
+ attr(div2, "class", "rss-feed-items");
+ attr(div3, "class", "rss-feed");
+ },
+ m(target, anchor) {
+ insert(target, div3, anchor);
+ append(div3, div1);
+ append(div1, div0);
+ if_blocks[current_block_type_index].m(div0, null);
+ append(div0, t0);
+ append(div0, span0);
+ append(span0, t1);
+ append(span0, t2);
+ if (if_block1)
+ if_block1.m(span0, null);
+ append(div1, t3);
+ append(div1, span1);
+ append(span1, t4);
+ append(div3, t5);
+ append(div3, div2);
+ if (if_block2)
+ if_block2.m(div2, null);
+ current = true;
+ if (!mounted) {
+ dispose = [
+ listen(div1, "click", ctx[5]),
+ listen(div1, "contextmenu", ctx[4])
+ ];
+ mounted = true;
+ }
+ },
+ p(ctx2, dirty) {
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type_1(ctx2, dirty);
+ if (current_block_type_index !== previous_block_index) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block0 = if_blocks[current_block_type_index];
+ if (!if_block0) {
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
+ if_block0.c();
+ } else {
+ }
+ transition_in(if_block0, 1);
+ if_block0.m(div0, t0);
+ }
+ if ((!current || dirty & 1) && t1_value !== (t1_value = ctx2[0].name + ""))
+ set_data(t1, t1_value);
+ if (ctx2[0].image) {
+ if (if_block1) {
+ if_block1.p(ctx2, dirty);
+ } else {
+ if_block1 = create_if_block_22(ctx2);
+ if_block1.c();
+ if_block1.m(span0, null);
+ }
+ } else if (if_block1) {
+ if_block1.d(1);
+ if_block1 = null;
+ }
+ if ((!current || dirty & 1) && t4_value !== (t4_value = ctx2[0].items.filter(func).length + ""))
+ set_data(t4, t4_value);
+ if (!current || dirty & 5 && div1_class_value !== (div1_class_value = "" + ((ctx2[2].contains(ctx2[0].name) ? "is-collapsed" : "") + " tree-item-self is-clickable"))) {
+ attr(div1, "class", div1_class_value);
+ }
+ if (dirty & 5)
+ show_if = !ctx2[2].contains(ctx2[0].name);
+ if (show_if) {
+ if (if_block2) {
+ if_block2.p(ctx2, dirty);
+ if (dirty & 5) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_13(ctx2);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div2, null);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div3);
+ if_blocks[current_block_type_index].d();
+ if (if_block1)
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ mounted = false;
+ run_all(dispose);
+ }
+ };
+}
+function create_if_block6(ctx) {
+ let p;
+ return {
+ c() {
+ p = element("p");
+ p.textContent = "...loading";
+ },
+ m(target, anchor) {
+ insert(target, p, anchor);
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching)
+ detach(p);
+ }
+ };
+}
+function create_else_block_1(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "down-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_32(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "right-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_22(ctx) {
+ let img;
+ let img_src_value;
+ let img_alt_value;
+ return {
+ c() {
+ img = element("img");
+ if (!src_url_equal(img.src, img_src_value = ctx[0].image))
+ attr(img, "src", img_src_value);
+ attr(img, "alt", img_alt_value = ctx[0].title);
+ set_style(img, "height", "1em");
+ },
+ m(target, anchor) {
+ insert(target, img, anchor);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 1 && !src_url_equal(img.src, img_src_value = ctx2[0].image)) {
+ attr(img, "src", img_src_value);
+ }
+ if (dirty & 1 && img_alt_value !== (img_alt_value = ctx2[0].title)) {
+ attr(img, "alt", img_alt_value);
+ }
+ },
+ d(detaching) {
+ if (detaching)
+ detach(img);
+ }
+ };
+}
+function create_if_block_13(ctx) {
+ let div;
+ let current;
+ let each_value = ctx[0].items;
+ let each_blocks = [];
+ for (let i = 0; i < each_value.length; i += 1) {
+ each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ div = element("div");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ attr(div, "class", "tree-item-children");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(div, null);
+ }
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 3) {
+ each_value = ctx2[0].items;
+ let i;
+ for (i = 0; i < each_value.length; i += 1) {
+ const child_ctx = get_each_context2(ctx2, each_value, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block2(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(div, null);
+ }
+ }
+ group_outros();
+ for (i = each_value.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_each_block2(ctx) {
+ let div1;
+ let div0;
+ let itemview;
+ let t_1;
+ let current;
+ itemview = new ItemView_default({
+ props: {
+ item: ctx[6],
+ plugin: ctx[1],
+ items: ctx[0].items
+ }
+ });
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ create_component(itemview.$$.fragment);
+ t_1 = space();
+ attr(div0, "class", "tree-item-self");
+ attr(div1, "class", "tree-item");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ mount_component(itemview, div0, null);
+ append(div1, t_1);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const itemview_changes = {};
+ if (dirty & 1)
+ itemview_changes.item = ctx2[6];
+ if (dirty & 2)
+ itemview_changes.plugin = ctx2[1];
+ if (dirty & 1)
+ itemview_changes.items = ctx2[0].items;
+ itemview.$set(itemview_changes);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(itemview.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(itemview.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ destroy_component(itemview);
+ }
+ };
+}
+function create_fragment6(ctx) {
+ let current_block_type_index;
+ let if_block;
+ let if_block_anchor;
+ let current;
+ const if_block_creators = [create_if_block6, create_else_block];
+ const if_blocks = [];
+ function select_block_type(ctx2, dirty) {
+ if (!ctx2[0])
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type(ctx, -1);
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ return {
+ c() {
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if_blocks[current_block_type_index].m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, [dirty]) {
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type(ctx2, dirty);
+ if (current_block_type_index === previous_block_index) {
+ if_blocks[current_block_type_index].p(ctx2, dirty);
+ } else {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block = if_blocks[current_block_type_index];
+ if (!if_block) {
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
+ if_block.c();
+ } else {
+ if_block.p(ctx2, dirty);
+ }
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if_blocks[current_block_type_index].d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+var func = (item) => !item.read;
+function instance6($$self, $$props, $$invalidate) {
+ let { feed = null } = $$props;
+ let { plugin } = $$props;
+ let folded = [];
+ foldedState.subscribe((value) => {
+ $$invalidate(2, folded = value);
+ });
+ function toggleFold(feed2) {
+ if (!folded) {
+ $$invalidate(2, folded = []);
+ }
+ if (folded.contains(feed2)) {
+ folded.remove(feed2);
+ } else
+ folded.push(feed2);
+ plugin.writeFolded(folded);
+ }
+ function openMenu(e) {
+ return __async(this, null, function* () {
+ const menu = new import_obsidian13.Menu(plugin.app);
+ menu.addItem((menuItem) => {
+ menuItem.setIcon("create-new").setTitle(t("create_all")).onClick(() => __async(this, null, function* () {
+ for (let item of feed.items) {
+ yield Action.CREATE_NOTE.processor(plugin, item);
+ }
+ }));
+ });
+ menu.addItem((menuItem) => {
+ menuItem.setIcon("feather-eye").setTitle(t("mark_all_as_read")).onClick(() => __async(this, null, function* () {
+ for (let item of feed.items) {
+ item.read = true;
+ }
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ }));
+ });
+ menu.addItem((menuItem) => {
+ menuItem.setIcon("tag-glyph").setTitle(t("add_tags_to_all")).onClick(() => __async(this, null, function* () {
+ const tagModal = new TagModal(plugin, []);
+ tagModal.onClose = () => __async(this, null, function* () {
+ for (let item of feed.items) {
+ item.tags.push(...tagModal.tags);
+ }
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ });
+ tagModal.open();
+ }));
+ });
+ menu.showAtPosition({ x: e.x, y: e.y });
+ });
+ }
+ const click_handler = () => toggleFold(feed.name);
+ $$self.$$set = ($$props2) => {
+ if ("feed" in $$props2)
+ $$invalidate(0, feed = $$props2.feed);
+ if ("plugin" in $$props2)
+ $$invalidate(1, plugin = $$props2.plugin);
+ };
+ return [feed, plugin, folded, toggleFold, openMenu, click_handler];
+}
+var FeedView = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance6, create_fragment6, safe_not_equal, { feed: 0, plugin: 1 });
+ }
+};
+var FeedView_default = FeedView;
+
+// src/view/FolderView.svelte
+var import_obsidian15 = __toModule(require("obsidian"));
+
+// src/view/TopRowButtons.svelte
+var import_obsidian14 = __toModule(require("obsidian"));
+function create_fragment7(ctx) {
+ let span;
+ let buttons_action;
+ let mounted;
+ let dispose;
+ return {
+ c() {
+ span = element("span");
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ if (!mounted) {
+ dispose = action_destroyer(buttons_action = ctx[1].call(null, span, ctx[0]));
+ mounted = true;
+ }
+ },
+ p(ctx2, [dirty]) {
+ if (buttons_action && is_function(buttons_action.update) && dirty & 1)
+ buttons_action.update.call(null, ctx2[0]);
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function instance7($$self, $$props, $$invalidate) {
+ let { plugin } = $$props;
+ const buttons = (node, plugin2) => {
+ new import_obsidian14.Setting(node).addExtraButton((button) => {
+ button.setIcon("refresh-cw").setTooltip(t("refresh_feeds")).onClick(() => __async(this, null, function* () {
+ yield plugin2.updateFeeds();
+ }));
+ });
+ };
+ $$self.$$set = ($$props2) => {
+ if ("plugin" in $$props2)
+ $$invalidate(0, plugin = $$props2.plugin);
+ };
+ return [plugin, buttons];
+}
+var TopRowButtons = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance7, create_fragment7, safe_not_equal, { plugin: 0 });
+ }
+};
+var TopRowButtons_default = TopRowButtons;
+
+// src/view/FolderView.svelte
+function get_each_context3(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[15] = list[i];
+ return child_ctx;
+}
+function get_each_context_12(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[18] = list[i];
+ return child_ctx;
+}
+function get_each_context_2(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[15] = list[i];
+ return child_ctx;
+}
+function get_each_context_3(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[23] = list[i];
+ return child_ctx;
+}
+function get_each_context_4(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[26] = list[i];
+ return child_ctx;
+}
+function get_each_context_5(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[26] = list[i];
+ return child_ctx;
+}
+function create_else_block2(ctx) {
+ let div;
+ let t0;
+ let t1;
+ let current;
+ let if_block0 = ctx[3] && create_if_block_9(ctx);
+ let if_block1 = !ctx[2] && create_if_block_82(ctx);
+ let if_block2 = ctx[2] && create_if_block_110(ctx);
+ return {
+ c() {
+ div = element("div");
+ if (if_block0)
+ if_block0.c();
+ t0 = space();
+ if (if_block1)
+ if_block1.c();
+ t1 = space();
+ if (if_block2)
+ if_block2.c();
+ attr(div, "class", "rss-view");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ if (if_block0)
+ if_block0.m(div, null);
+ append(div, t0);
+ if (if_block1)
+ if_block1.m(div, null);
+ append(div, t1);
+ if (if_block2)
+ if_block2.m(div, null);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (ctx2[3]) {
+ if (if_block0) {
+ if_block0.p(ctx2, dirty);
+ if (dirty & 8) {
+ transition_in(if_block0, 1);
+ }
+ } else {
+ if_block0 = create_if_block_9(ctx2);
+ if_block0.c();
+ transition_in(if_block0, 1);
+ if_block0.m(div, t0);
+ }
+ } else if (if_block0) {
+ group_outros();
+ transition_out(if_block0, 1, 1, () => {
+ if_block0 = null;
+ });
+ check_outros();
+ }
+ if (!ctx2[2]) {
+ if (if_block1) {
+ if_block1.p(ctx2, dirty);
+ } else {
+ if_block1 = create_if_block_82(ctx2);
+ if_block1.c();
+ if_block1.m(div, t1);
+ }
+ } else if (if_block1) {
+ if_block1.d(1);
+ if_block1 = null;
+ }
+ if (ctx2[2]) {
+ if (if_block2) {
+ if_block2.p(ctx2, dirty);
+ if (dirty & 4) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_110(ctx2);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div, null);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div);
+ if (if_block0)
+ if_block0.d();
+ if (if_block1)
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ }
+ };
+}
+function create_if_block7(ctx) {
+ let h1;
+ return {
+ c() {
+ h1 = element("h1");
+ h1.textContent = `${t("loading")}`;
+ },
+ m(target, anchor) {
+ insert(target, h1, anchor);
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching)
+ detach(h1);
+ }
+ };
+}
+function create_if_block_9(ctx) {
+ let div1;
+ let div0;
+ let span;
+ let show_if_1;
+ let current_block_type_index;
+ let if_block0;
+ let t0;
+ let div0_class_value;
+ let t1;
+ let show_if = !ctx[1].contains("rss-filters");
+ let current;
+ let mounted;
+ let dispose;
+ const if_block_creators = [create_if_block_20, create_else_block_8];
+ const if_blocks = [];
+ function select_block_type_1(ctx2, dirty) {
+ if (dirty & 2)
+ show_if_1 = null;
+ if (show_if_1 == null)
+ show_if_1 = !!ctx2[1].contains("rss-filters");
+ if (show_if_1)
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type_1(ctx, -1);
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ function select_block_type_2(ctx2, dirty) {
+ if (ctx2[4].renamedText.filtered_folders !== "")
+ return create_if_block_19;
+ return create_else_block_7;
+ }
+ let current_block_type = select_block_type_2(ctx, -1);
+ let if_block1 = current_block_type(ctx);
+ let if_block2 = show_if && create_if_block_10(ctx);
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ span = element("span");
+ if_block0.c();
+ t0 = space();
+ if_block1.c();
+ t1 = space();
+ if (if_block2)
+ if_block2.c();
+ attr(span, "class", "tree-item-self is-clickable");
+ attr(div0, "class", div0_class_value = "" + ((ctx[1].contains("rss-filters") ? "is-collapsed" : "") + " tree-item is-clickable"));
+ attr(div1, "class", "rss-filtered-folders");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ append(div0, span);
+ if_blocks[current_block_type_index].m(span, null);
+ append(span, t0);
+ if_block1.m(span, null);
+ append(div1, t1);
+ if (if_block2)
+ if_block2.m(div1, null);
+ current = true;
+ if (!mounted) {
+ dispose = listen(div0, "click", ctx[8]);
+ mounted = true;
+ }
+ },
+ p(ctx2, dirty) {
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type_1(ctx2, dirty);
+ if (current_block_type_index !== previous_block_index) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block0 = if_blocks[current_block_type_index];
+ if (!if_block0) {
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
+ if_block0.c();
+ } else {
+ }
+ transition_in(if_block0, 1);
+ if_block0.m(span, t0);
+ }
+ if (current_block_type === (current_block_type = select_block_type_2(ctx2, dirty)) && if_block1) {
+ if_block1.p(ctx2, dirty);
+ } else {
+ if_block1.d(1);
+ if_block1 = current_block_type(ctx2);
+ if (if_block1) {
+ if_block1.c();
+ if_block1.m(span, null);
+ }
+ }
+ if (!current || dirty & 2 && div0_class_value !== (div0_class_value = "" + ((ctx2[1].contains("rss-filters") ? "is-collapsed" : "") + " tree-item is-clickable"))) {
+ attr(div0, "class", div0_class_value);
+ }
+ if (dirty & 2)
+ show_if = !ctx2[1].contains("rss-filters");
+ if (show_if) {
+ if (if_block2) {
+ if_block2.p(ctx2, dirty);
+ if (dirty & 2) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_10(ctx2);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div1, null);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ if_blocks[current_block_type_index].d();
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function create_else_block_8(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "down-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_20(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "right-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_else_block_7(ctx) {
+ let span;
+ return {
+ c() {
+ span = element("span");
+ span.textContent = `${t("filtered_folders")}`;
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ },
+ p: noop,
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ }
+ };
+}
+function create_if_block_19(ctx) {
+ let span;
+ let t_1_value = ctx[4].renamedText.filtered_folders + "";
+ let t_1;
+ return {
+ c() {
+ span = element("span");
+ t_1 = text(t_1_value);
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ append(span, t_1);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 16 && t_1_value !== (t_1_value = ctx2[4].renamedText.filtered_folders + ""))
+ set_data(t_1, t_1_value);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ }
+ };
+}
+function create_if_block_10(ctx) {
+ let span;
+ let current;
+ let each_value_2 = buildTreeStructure(ctx[3]);
+ let each_blocks = [];
+ for (let i = 0; i < each_value_2.length; i += 1) {
+ each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ span = element("span");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(span, null);
+ }
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 171) {
+ each_value_2 = buildTreeStructure(ctx2[3]);
+ let i;
+ for (i = 0; i < each_value_2.length; i += 1) {
+ const child_ctx = get_each_context_2(ctx2, each_value_2, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block_2(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(span, null);
+ }
+ }
+ group_outros();
+ for (i = each_value_2.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value_2.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_else_block_6(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "down-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_18(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "right-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_16(ctx) {
+ let show_if = !ctx[1].contains("rss-filters-" + ctx[15].name);
+ let if_block_anchor;
+ let current;
+ let if_block = show_if && create_if_block_17(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 10)
+ show_if = !ctx2[1].contains("rss-filters-" + ctx2[15].name);
+ if (show_if) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ if (dirty & 10) {
+ transition_in(if_block, 1);
+ }
+ } else {
+ if_block = create_if_block_17(ctx2);
+ if_block.c();
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ group_outros();
+ transition_out(if_block, 1, 1, () => {
+ if_block = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function create_if_block_17(ctx) {
+ let div;
+ let current;
+ let each_value_5 = ctx[15].filter.items.items;
+ let each_blocks = [];
+ for (let i = 0; i < each_value_5.length; i += 1) {
+ each_blocks[i] = create_each_block_5(get_each_context_5(ctx, each_value_5, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ div = element("div");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ attr(div, "class", "tree-item-children");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(div, null);
+ }
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 9) {
+ each_value_5 = ctx2[15].filter.items.items;
+ let i;
+ for (i = 0; i < each_value_5.length; i += 1) {
+ const child_ctx = get_each_context_5(ctx2, each_value_5, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block_5(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(div, null);
+ }
+ }
+ group_outros();
+ for (i = each_value_5.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value_5.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_each_block_5(ctx) {
+ let div1;
+ let div0;
+ let itemview;
+ let t_1;
+ let current;
+ itemview = new ItemView_default({
+ props: {
+ item: ctx[26],
+ plugin: ctx[0],
+ items: ctx[15].filter.items.items
+ }
+ });
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ create_component(itemview.$$.fragment);
+ t_1 = space();
+ attr(div0, "class", "tree-item-self");
+ attr(div1, "class", "tree-item");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ mount_component(itemview, div0, null);
+ append(div1, t_1);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const itemview_changes = {};
+ if (dirty & 8)
+ itemview_changes.item = ctx2[26];
+ if (dirty & 1)
+ itemview_changes.plugin = ctx2[0];
+ if (dirty & 8)
+ itemview_changes.items = ctx2[15].filter.items.items;
+ itemview.$set(itemview_changes);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(itemview.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(itemview.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ destroy_component(itemview);
+ }
+ };
+}
+function create_if_block_11(ctx) {
+ let show_if = !ctx[1].contains("rss-filters-" + ctx[15].name);
+ let if_block_anchor;
+ let current;
+ let if_block = show_if && create_if_block_122(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 10)
+ show_if = !ctx2[1].contains("rss-filters-" + ctx2[15].name);
+ if (show_if) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ if (dirty & 10) {
+ transition_in(if_block, 1);
+ }
+ } else {
+ if_block = create_if_block_122(ctx2);
+ if_block.c();
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ group_outros();
+ transition_out(if_block, 1, 1, () => {
+ if_block = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function create_if_block_122(ctx) {
+ let each_1_anchor;
+ let current;
+ let each_value_3 = ctx[15].children;
+ let each_blocks = [];
+ for (let i = 0; i < each_value_3.length; i += 1) {
+ each_blocks[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ each_1_anchor = empty();
+ },
+ m(target, anchor) {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(target, anchor);
+ }
+ insert(target, each_1_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 43) {
+ each_value_3 = ctx2[15].children;
+ let i;
+ for (i = 0; i < each_value_3.length; i += 1) {
+ const child_ctx = get_each_context_3(ctx2, each_value_3, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block_3(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
+ }
+ }
+ group_outros();
+ for (i = each_value_3.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value_3.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ destroy_each(each_blocks, detaching);
+ if (detaching)
+ detach(each_1_anchor);
+ }
+ };
+}
+function create_else_block_5(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "down-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_15(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "right-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_132(ctx) {
+ let show_if = !ctx[1].contains("rss-filters-" + ctx[23].filter.filter.name);
+ let if_block_anchor;
+ let current;
+ let if_block = show_if && create_if_block_14(ctx);
+ return {
+ c() {
+ if (if_block)
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ if (if_block)
+ if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 10)
+ show_if = !ctx2[1].contains("rss-filters-" + ctx2[23].filter.filter.name);
+ if (show_if) {
+ if (if_block) {
+ if_block.p(ctx2, dirty);
+ if (dirty & 10) {
+ transition_in(if_block, 1);
+ }
+ } else {
+ if_block = create_if_block_14(ctx2);
+ if_block.c();
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ } else if (if_block) {
+ group_outros();
+ transition_out(if_block, 1, 1, () => {
+ if_block = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ if (if_block)
+ if_block.d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function create_if_block_14(ctx) {
+ let div;
+ let current;
+ let each_value_4 = ctx[23].filter.items.items;
+ let each_blocks = [];
+ for (let i = 0; i < each_value_4.length; i += 1) {
+ each_blocks[i] = create_each_block_4(get_each_context_4(ctx, each_value_4, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ div = element("div");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ attr(div, "class", "tree-item-children");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(div, null);
+ }
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 9) {
+ each_value_4 = ctx2[23].filter.items.items;
+ let i;
+ for (i = 0; i < each_value_4.length; i += 1) {
+ const child_ctx = get_each_context_4(ctx2, each_value_4, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block_4(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(div, null);
+ }
+ }
+ group_outros();
+ for (i = each_value_4.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value_4.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_each_block_4(ctx) {
+ let div1;
+ let div0;
+ let itemview;
+ let t_1;
+ let current;
+ itemview = new ItemView_default({
+ props: {
+ item: ctx[26],
+ plugin: ctx[0],
+ items: ctx[23].filter.items.items
+ }
+ });
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ create_component(itemview.$$.fragment);
+ t_1 = space();
+ attr(div0, "class", "tree-item-self");
+ attr(div1, "class", "tree-item");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ mount_component(itemview, div0, null);
+ append(div1, t_1);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const itemview_changes = {};
+ if (dirty & 8)
+ itemview_changes.item = ctx2[26];
+ if (dirty & 1)
+ itemview_changes.plugin = ctx2[0];
+ if (dirty & 8)
+ itemview_changes.items = ctx2[23].filter.items.items;
+ itemview.$set(itemview_changes);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(itemview.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(itemview.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ destroy_component(itemview);
+ }
+ };
+}
+function create_each_block_3(ctx) {
+ var _a;
+ let div1;
+ let div0;
+ let show_if;
+ let current_block_type_index;
+ let if_block0;
+ let t0;
+ let span0;
+ let t1_value = ctx[23].name + "";
+ let t1;
+ let t2;
+ let span1;
+ let t3_value = ((_a = ctx[23].filter) == null ? void 0 : _a.items.items.length) + "";
+ let t3;
+ let div0_class_value;
+ let t4;
+ let t5;
+ let current;
+ let mounted;
+ let dispose;
+ const if_block_creators = [create_if_block_15, create_else_block_5];
+ const if_blocks = [];
+ function select_block_type_4(ctx2, dirty) {
+ if (dirty & 10)
+ show_if = null;
+ if (show_if == null)
+ show_if = !!ctx2[1].contains("rss-filters-" + ctx2[23].filter.filter.name);
+ if (show_if)
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type_4(ctx, -1);
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ function click_handler_2() {
+ return ctx[11](ctx[23]);
+ }
+ let if_block1 = ctx[23].filter !== void 0 && create_if_block_132(ctx);
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ if_block0.c();
+ t0 = space();
+ span0 = element("span");
+ t1 = text(t1_value);
+ t2 = space();
+ span1 = element("span");
+ t3 = text(t3_value);
+ t4 = space();
+ if (if_block1)
+ if_block1.c();
+ t5 = space();
+ attr(span1, "class", "rss-item-count");
+ attr(div0, "class", div0_class_value = "" + ((ctx[1].contains("rss-filters-" + ctx[23].filter.filter.name) ? "is-collapsed" : "") + " tree-item-self is-clickable"));
+ attr(div1, "class", "tree-item-children");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ if_blocks[current_block_type_index].m(div0, null);
+ append(div0, t0);
+ append(div0, span0);
+ append(span0, t1);
+ append(div0, t2);
+ append(div0, span1);
+ append(span1, t3);
+ append(div1, t4);
+ if (if_block1)
+ if_block1.m(div1, null);
+ append(div1, t5);
+ current = true;
+ if (!mounted) {
+ dispose = listen(div0, "click", click_handler_2);
+ mounted = true;
+ }
+ },
+ p(new_ctx, dirty) {
+ var _a2;
+ ctx = new_ctx;
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type_4(ctx, dirty);
+ if (current_block_type_index !== previous_block_index) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block0 = if_blocks[current_block_type_index];
+ if (!if_block0) {
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ if_block0.c();
+ } else {
+ }
+ transition_in(if_block0, 1);
+ if_block0.m(div0, t0);
+ }
+ if ((!current || dirty & 8) && t1_value !== (t1_value = ctx[23].name + ""))
+ set_data(t1, t1_value);
+ if ((!current || dirty & 8) && t3_value !== (t3_value = ((_a2 = ctx[23].filter) == null ? void 0 : _a2.items.items.length) + ""))
+ set_data(t3, t3_value);
+ if (!current || dirty & 10 && div0_class_value !== (div0_class_value = "" + ((ctx[1].contains("rss-filters-" + ctx[23].filter.filter.name) ? "is-collapsed" : "") + " tree-item-self is-clickable"))) {
+ attr(div0, "class", div0_class_value);
+ }
+ if (ctx[23].filter !== void 0) {
+ if (if_block1) {
+ if_block1.p(ctx, dirty);
+ if (dirty & 8) {
+ transition_in(if_block1, 1);
+ }
+ } else {
+ if_block1 = create_if_block_132(ctx);
+ if_block1.c();
+ transition_in(if_block1, 1);
+ if_block1.m(div1, t5);
+ }
+ } else if (if_block1) {
+ group_outros();
+ transition_out(if_block1, 1, 1, () => {
+ if_block1 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block1);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block1);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ if_blocks[current_block_type_index].d();
+ if (if_block1)
+ if_block1.d();
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function create_each_block_2(ctx) {
+ var _a;
+ let div1;
+ let div0;
+ let span2;
+ let show_if;
+ let current_block_type_index;
+ let if_block0;
+ let t0;
+ let span0;
+ let t1_value = ctx[15].name + "";
+ let t1;
+ let t2;
+ let span1;
+ let t3_value = ((_a = ctx[15].filter) == null ? void 0 : _a.items.items.length) + "";
+ let t3;
+ let div0_class_value;
+ let t4;
+ let t5;
+ let t6;
+ let current;
+ let mounted;
+ let dispose;
+ const if_block_creators = [create_if_block_18, create_else_block_6];
+ const if_blocks = [];
+ function select_block_type_3(ctx2, dirty) {
+ if (dirty & 10)
+ show_if = null;
+ if (show_if == null)
+ show_if = !!ctx2[1].contains("rss-filters-" + ctx2[15].name);
+ if (show_if)
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type_3(ctx, -1);
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ function contextmenu_handler(...args) {
+ return ctx[9](ctx[15], ...args);
+ }
+ function click_handler_1() {
+ return ctx[10](ctx[15]);
+ }
+ let if_block1 = ctx[15].filter !== void 0 && create_if_block_16(ctx);
+ let if_block2 = ctx[15].children && create_if_block_11(ctx);
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ span2 = element("span");
+ if_block0.c();
+ t0 = space();
+ span0 = element("span");
+ t1 = text(t1_value);
+ t2 = space();
+ span1 = element("span");
+ t3 = text(t3_value);
+ t4 = space();
+ if (if_block1)
+ if_block1.c();
+ t5 = space();
+ if (if_block2)
+ if_block2.c();
+ t6 = space();
+ attr(span1, "class", "rss-item-count");
+ attr(span2, "class", "tree-item-self is-clickable");
+ attr(div0, "class", div0_class_value = "" + ((ctx[1].contains("rss-filters-" + ctx[15].name) ? "is-collapsed" : "") + " tree-item is-clickable"));
+ attr(div1, "class", "tree-item-children");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ append(div0, span2);
+ if_blocks[current_block_type_index].m(span2, null);
+ append(span2, t0);
+ append(span2, span0);
+ append(span0, t1);
+ append(span2, t2);
+ append(span2, span1);
+ append(span1, t3);
+ append(div1, t4);
+ if (if_block1)
+ if_block1.m(div1, null);
+ append(div1, t5);
+ if (if_block2)
+ if_block2.m(div1, null);
+ append(div1, t6);
+ current = true;
+ if (!mounted) {
+ dispose = [
+ listen(span2, "contextmenu", contextmenu_handler),
+ listen(div0, "click", click_handler_1)
+ ];
+ mounted = true;
+ }
+ },
+ p(new_ctx, dirty) {
+ var _a2;
+ ctx = new_ctx;
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type_3(ctx, dirty);
+ if (current_block_type_index !== previous_block_index) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block0 = if_blocks[current_block_type_index];
+ if (!if_block0) {
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ if_block0.c();
+ } else {
+ }
+ transition_in(if_block0, 1);
+ if_block0.m(span2, t0);
+ }
+ if ((!current || dirty & 8) && t1_value !== (t1_value = ctx[15].name + ""))
+ set_data(t1, t1_value);
+ if ((!current || dirty & 8) && t3_value !== (t3_value = ((_a2 = ctx[15].filter) == null ? void 0 : _a2.items.items.length) + ""))
+ set_data(t3, t3_value);
+ if (!current || dirty & 10 && div0_class_value !== (div0_class_value = "" + ((ctx[1].contains("rss-filters-" + ctx[15].name) ? "is-collapsed" : "") + " tree-item is-clickable"))) {
+ attr(div0, "class", div0_class_value);
+ }
+ if (ctx[15].filter !== void 0) {
+ if (if_block1) {
+ if_block1.p(ctx, dirty);
+ if (dirty & 8) {
+ transition_in(if_block1, 1);
+ }
+ } else {
+ if_block1 = create_if_block_16(ctx);
+ if_block1.c();
+ transition_in(if_block1, 1);
+ if_block1.m(div1, t5);
+ }
+ } else if (if_block1) {
+ group_outros();
+ transition_out(if_block1, 1, 1, () => {
+ if_block1 = null;
+ });
+ check_outros();
+ }
+ if (ctx[15].children) {
+ if (if_block2) {
+ if_block2.p(ctx, dirty);
+ if (dirty & 8) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_11(ctx);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div1, t6);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block1);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block1);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ if_blocks[current_block_type_index].d();
+ if (if_block1)
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ mounted = false;
+ run_all(dispose);
+ }
+ };
+}
+function create_if_block_82(ctx) {
+ let h1;
+ return {
+ c() {
+ h1 = element("h1");
+ h1.textContent = `${t("loading")}`;
+ },
+ m(target, anchor) {
+ insert(target, h1, anchor);
+ },
+ p: noop,
+ d(detaching) {
+ if (detaching)
+ detach(h1);
+ }
+ };
+}
+function create_if_block_110(ctx) {
+ let div1;
+ let div0;
+ let span;
+ let show_if_1;
+ let current_block_type_index;
+ let if_block0;
+ let t0;
+ let div0_class_value;
+ let t1;
+ let show_if = !ctx[1].contains("rss-folders");
+ let current;
+ let mounted;
+ let dispose;
+ const if_block_creators = [create_if_block_72, create_else_block_4];
+ const if_blocks = [];
+ function select_block_type_5(ctx2, dirty) {
+ if (dirty & 2)
+ show_if_1 = null;
+ if (show_if_1 == null)
+ show_if_1 = !!ctx2[1].contains("rss-folders");
+ if (show_if_1)
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type_5(ctx, -1);
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ function select_block_type_6(ctx2, dirty) {
+ if (ctx2[4].renamedText.folders !== "")
+ return create_if_block_62;
+ return create_else_block_3;
+ }
+ let current_block_type = select_block_type_6(ctx, -1);
+ let if_block1 = current_block_type(ctx);
+ let if_block2 = show_if && create_if_block_23(ctx);
+ return {
+ c() {
+ div1 = element("div");
+ div0 = element("div");
+ span = element("span");
+ if_block0.c();
+ t0 = space();
+ if_block1.c();
+ t1 = space();
+ if (if_block2)
+ if_block2.c();
+ attr(span, "class", "tree-item-self is-clickable");
+ attr(div0, "class", div0_class_value = "" + ((ctx[1].contains("rss-folders") ? "is-collapsed" : "") + " tree-item is-clickable"));
+ attr(div1, "class", "rss-feeds-folders");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, div0);
+ append(div0, span);
+ if_blocks[current_block_type_index].m(span, null);
+ append(span, t0);
+ if_block1.m(span, null);
+ append(div1, t1);
+ if (if_block2)
+ if_block2.m(div1, null);
+ current = true;
+ if (!mounted) {
+ dispose = listen(div0, "click", ctx[12]);
+ mounted = true;
+ }
+ },
+ p(ctx2, dirty) {
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type_5(ctx2, dirty);
+ if (current_block_type_index !== previous_block_index) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block0 = if_blocks[current_block_type_index];
+ if (!if_block0) {
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
+ if_block0.c();
+ } else {
+ }
+ transition_in(if_block0, 1);
+ if_block0.m(span, t0);
+ }
+ if (current_block_type === (current_block_type = select_block_type_6(ctx2, dirty)) && if_block1) {
+ if_block1.p(ctx2, dirty);
+ } else {
+ if_block1.d(1);
+ if_block1 = current_block_type(ctx2);
+ if (if_block1) {
+ if_block1.c();
+ if_block1.m(span, null);
+ }
+ }
+ if (!current || dirty & 2 && div0_class_value !== (div0_class_value = "" + ((ctx2[1].contains("rss-folders") ? "is-collapsed" : "") + " tree-item is-clickable"))) {
+ attr(div0, "class", div0_class_value);
+ }
+ if (dirty & 2)
+ show_if = !ctx2[1].contains("rss-folders");
+ if (show_if) {
+ if (if_block2) {
+ if_block2.p(ctx2, dirty);
+ if (dirty & 2) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_23(ctx2);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div1, null);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ if_blocks[current_block_type_index].d();
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ mounted = false;
+ dispose();
+ }
+ };
+}
+function create_else_block_4(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "down-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_72(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "right-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_else_block_3(ctx) {
+ let span;
+ return {
+ c() {
+ span = element("span");
+ span.textContent = `${t("folders")}`;
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ },
+ p: noop,
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ }
+ };
+}
+function create_if_block_62(ctx) {
+ let span;
+ let t_1_value = ctx[4].renamedText.folders + "";
+ let t_1;
+ return {
+ c() {
+ span = element("span");
+ t_1 = text(t_1_value);
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ append(span, t_1);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 16 && t_1_value !== (t_1_value = ctx2[4].renamedText.folders + ""))
+ set_data(t_1, t_1_value);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ }
+ };
+}
+function create_if_block_23(ctx) {
+ let div;
+ let current;
+ let each_value = Object.keys(ctx[2]);
+ let each_blocks = [];
+ for (let i = 0; i < each_value.length; i += 1) {
+ each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ div = element("div");
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ attr(div, "class", "tree-item-children");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(div, null);
+ }
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 119) {
+ each_value = Object.keys(ctx2[2]);
+ let i;
+ for (i = 0; i < each_value.length; i += 1) {
+ const child_ctx = get_each_context3(ctx2, each_value, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block3(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(div, null);
+ }
+ }
+ group_outros();
+ for (i = each_value.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div);
+ destroy_each(each_blocks, detaching);
+ }
+ };
+}
+function create_else_block_2(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "down-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_if_block_52(ctx) {
+ let iconcomponent;
+ let current;
+ iconcomponent = new IconComponent_default({
+ props: { iconName: "right-chevron-glyph" }
+ });
+ return {
+ c() {
+ create_component(iconcomponent.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(iconcomponent, target, anchor);
+ current = true;
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(iconcomponent.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(iconcomponent.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(iconcomponent, detaching);
+ }
+ };
+}
+function create_else_block_12(ctx) {
+ let span;
+ let t_1_value = (ctx[4].renamedText.no_folder !== "" ? ctx[4].renamedText.no_folder : t("no_folder")) + "";
+ let t_1;
+ return {
+ c() {
+ span = element("span");
+ t_1 = text(t_1_value);
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ append(span, t_1);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 16 && t_1_value !== (t_1_value = (ctx2[4].renamedText.no_folder !== "" ? ctx2[4].renamedText.no_folder : t("no_folder")) + ""))
+ set_data(t_1, t_1_value);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ }
+ };
+}
+function create_if_block_42(ctx) {
+ let span;
+ let t_1_value = ctx[15] + "";
+ let t_1;
+ return {
+ c() {
+ span = element("span");
+ t_1 = text(t_1_value);
+ },
+ m(target, anchor) {
+ insert(target, span, anchor);
+ append(span, t_1);
+ },
+ p(ctx2, dirty) {
+ if (dirty & 4 && t_1_value !== (t_1_value = ctx2[15] + ""))
+ set_data(t_1, t_1_value);
+ },
+ d(detaching) {
+ if (detaching)
+ detach(span);
+ }
+ };
+}
+function create_if_block_33(ctx) {
+ let each_1_anchor;
+ let current;
+ let each_value_1 = ctx[2][ctx[15]];
+ let each_blocks = [];
+ for (let i = 0; i < each_value_1.length; i += 1) {
+ each_blocks[i] = create_each_block_12(get_each_context_12(ctx, each_value_1, i));
+ }
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
+ each_blocks[i] = null;
+ });
+ return {
+ c() {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+ each_1_anchor = empty();
+ },
+ m(target, anchor) {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].m(target, anchor);
+ }
+ insert(target, each_1_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ if (dirty & 5) {
+ each_value_1 = ctx2[2][ctx2[15]];
+ let i;
+ for (i = 0; i < each_value_1.length; i += 1) {
+ const child_ctx = get_each_context_12(ctx2, each_value_1, i);
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ transition_in(each_blocks[i], 1);
+ } else {
+ each_blocks[i] = create_each_block_12(child_ctx);
+ each_blocks[i].c();
+ transition_in(each_blocks[i], 1);
+ each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
+ }
+ }
+ group_outros();
+ for (i = each_value_1.length; i < each_blocks.length; i += 1) {
+ out(i);
+ }
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ for (let i = 0; i < each_value_1.length; i += 1) {
+ transition_in(each_blocks[i]);
+ }
+ current = true;
+ },
+ o(local) {
+ each_blocks = each_blocks.filter(Boolean);
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ transition_out(each_blocks[i]);
+ }
+ current = false;
+ },
+ d(detaching) {
+ destroy_each(each_blocks, detaching);
+ if (detaching)
+ detach(each_1_anchor);
+ }
+ };
+}
+function create_each_block_12(ctx) {
+ let feedview;
+ let current;
+ feedview = new FeedView_default({
+ props: {
+ feed: ctx[18],
+ plugin: ctx[0]
+ }
+ });
+ return {
+ c() {
+ create_component(feedview.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(feedview, target, anchor);
+ current = true;
+ },
+ p(ctx2, dirty) {
+ const feedview_changes = {};
+ if (dirty & 4)
+ feedview_changes.feed = ctx2[18];
+ if (dirty & 1)
+ feedview_changes.plugin = ctx2[0];
+ feedview.$set(feedview_changes);
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(feedview.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(feedview.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(feedview, detaching);
+ }
+ };
+}
+function create_each_block3(ctx) {
+ let div1;
+ let span;
+ let show_if_1;
+ let current_block_type_index;
+ let if_block0;
+ let t0;
+ let span_class_value;
+ let t1;
+ let div0;
+ let show_if = !ctx[1].contains(ctx[15]);
+ let t2;
+ let current;
+ let mounted;
+ let dispose;
+ const if_block_creators = [create_if_block_52, create_else_block_2];
+ const if_blocks = [];
+ function select_block_type_7(ctx2, dirty) {
+ if (dirty & 6)
+ show_if_1 = null;
+ if (show_if_1 == null)
+ show_if_1 = !!ctx2[1].contains(ctx2[15]);
+ if (show_if_1)
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type_7(ctx, -1);
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ function select_block_type_8(ctx2, dirty) {
+ if (ctx2[15])
+ return create_if_block_42;
+ return create_else_block_12;
+ }
+ let current_block_type = select_block_type_8(ctx, -1);
+ let if_block1 = current_block_type(ctx);
+ function click_handler_4() {
+ return ctx[13](ctx[15]);
+ }
+ function contextmenu_handler_1(...args) {
+ return ctx[14](ctx[15], ...args);
+ }
+ let if_block2 = show_if && create_if_block_33(ctx);
+ return {
+ c() {
+ div1 = element("div");
+ span = element("span");
+ if_block0.c();
+ t0 = space();
+ if_block1.c();
+ t1 = space();
+ div0 = element("div");
+ if (if_block2)
+ if_block2.c();
+ t2 = space();
+ attr(span, "class", span_class_value = "" + ((ctx[1].contains(ctx[15]) ? "is-collapsed" : "") + " tree-item-self is-clickable"));
+ attr(div0, "class", "tree-item-children");
+ attr(div1, "class", "rss-folder tree-item");
+ },
+ m(target, anchor) {
+ insert(target, div1, anchor);
+ append(div1, span);
+ if_blocks[current_block_type_index].m(span, null);
+ append(span, t0);
+ if_block1.m(span, null);
+ append(div1, t1);
+ append(div1, div0);
+ if (if_block2)
+ if_block2.m(div0, null);
+ append(div1, t2);
+ current = true;
+ if (!mounted) {
+ dispose = [
+ listen(span, "click", click_handler_4),
+ listen(span, "contextmenu", contextmenu_handler_1)
+ ];
+ mounted = true;
+ }
+ },
+ p(new_ctx, dirty) {
+ ctx = new_ctx;
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type_7(ctx, dirty);
+ if (current_block_type_index !== previous_block_index) {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block0 = if_blocks[current_block_type_index];
+ if (!if_block0) {
+ if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ if_block0.c();
+ } else {
+ }
+ transition_in(if_block0, 1);
+ if_block0.m(span, t0);
+ }
+ if (current_block_type === (current_block_type = select_block_type_8(ctx, dirty)) && if_block1) {
+ if_block1.p(ctx, dirty);
+ } else {
+ if_block1.d(1);
+ if_block1 = current_block_type(ctx);
+ if (if_block1) {
+ if_block1.c();
+ if_block1.m(span, null);
+ }
+ }
+ if (!current || dirty & 6 && span_class_value !== (span_class_value = "" + ((ctx[1].contains(ctx[15]) ? "is-collapsed" : "") + " tree-item-self is-clickable"))) {
+ attr(span, "class", span_class_value);
+ }
+ if (dirty & 6)
+ show_if = !ctx[1].contains(ctx[15]);
+ if (show_if) {
+ if (if_block2) {
+ if_block2.p(ctx, dirty);
+ if (dirty & 6) {
+ transition_in(if_block2, 1);
+ }
+ } else {
+ if_block2 = create_if_block_33(ctx);
+ if_block2.c();
+ transition_in(if_block2, 1);
+ if_block2.m(div0, null);
+ }
+ } else if (if_block2) {
+ group_outros();
+ transition_out(if_block2, 1, 1, () => {
+ if_block2 = null;
+ });
+ check_outros();
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(if_block0);
+ transition_in(if_block2);
+ current = true;
+ },
+ o(local) {
+ transition_out(if_block0);
+ transition_out(if_block2);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching)
+ detach(div1);
+ if_blocks[current_block_type_index].d();
+ if_block1.d();
+ if (if_block2)
+ if_block2.d();
+ mounted = false;
+ run_all(dispose);
+ }
+ };
+}
+function create_fragment8(ctx) {
+ let toprowbuttons;
+ let t_1;
+ let current_block_type_index;
+ let if_block;
+ let if_block_anchor;
+ let current;
+ toprowbuttons = new TopRowButtons_default({ props: { plugin: ctx[0] } });
+ const if_block_creators = [create_if_block7, create_else_block2];
+ const if_blocks = [];
+ function select_block_type(ctx2, dirty) {
+ if (!ctx2[1])
+ return 0;
+ return 1;
+ }
+ current_block_type_index = select_block_type(ctx, -1);
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
+ return {
+ c() {
+ create_component(toprowbuttons.$$.fragment);
+ t_1 = space();
+ if_block.c();
+ if_block_anchor = empty();
+ },
+ m(target, anchor) {
+ mount_component(toprowbuttons, target, anchor);
+ insert(target, t_1, anchor);
+ if_blocks[current_block_type_index].m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+ p(ctx2, [dirty]) {
+ const toprowbuttons_changes = {};
+ if (dirty & 1)
+ toprowbuttons_changes.plugin = ctx2[0];
+ toprowbuttons.$set(toprowbuttons_changes);
+ let previous_block_index = current_block_type_index;
+ current_block_type_index = select_block_type(ctx2, dirty);
+ if (current_block_type_index === previous_block_index) {
+ if_blocks[current_block_type_index].p(ctx2, dirty);
+ } else {
+ group_outros();
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
+ if_blocks[previous_block_index] = null;
+ });
+ check_outros();
+ if_block = if_blocks[current_block_type_index];
+ if (!if_block) {
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
+ if_block.c();
+ } else {
+ if_block.p(ctx2, dirty);
+ }
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ }
+ },
+ i(local) {
+ if (current)
+ return;
+ transition_in(toprowbuttons.$$.fragment, local);
+ transition_in(if_block);
+ current = true;
+ },
+ o(local) {
+ transition_out(toprowbuttons.$$.fragment, local);
+ transition_out(if_block);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(toprowbuttons, detaching);
+ if (detaching)
+ detach(t_1);
+ if_blocks[current_block_type_index].d(detaching);
+ if (detaching)
+ detach(if_block_anchor);
+ }
+ };
+}
+function buildTreeStructure(filteredContent) {
+ let result = [];
+ let level = { result };
+ filteredContent.forEach((filter) => {
+ filter.filter.name.split("/").reduce((r, name) => {
+ if (!r[name]) {
+ r[name] = { result: [] };
+ if (filter.filter.name.endsWith(name)) {
+ r.result.push({ name, children: r[name].result, filter });
+ } else {
+ r.result.push({ name, children: r[name].result });
+ }
+ }
+ return r[name];
+ }, level);
+ });
+ return result;
+}
+function instance8($$self, $$props, $$invalidate) {
+ let $sortedFeedsStore;
+ let $filteredItemsStore;
+ let $settingsStore;
+ component_subscribe($$self, sortedFeedsStore, ($$value) => $$invalidate(2, $sortedFeedsStore = $$value));
+ component_subscribe($$self, filteredItemsStore, ($$value) => $$invalidate(3, $filteredItemsStore = $$value));
+ component_subscribe($$self, settingsStore, ($$value) => $$invalidate(4, $settingsStore = $$value));
+ let { plugin } = $$props;
+ let folded = [];
+ foldedState.subscribe((value) => {
+ $$invalidate(1, folded = value);
+ });
+ function toggleFold(folder) {
+ if (!folded) {
+ $$invalidate(1, folded = []);
+ }
+ if (folded.contains(folder)) {
+ folded.remove(folder);
+ } else
+ folded.push(folder);
+ plugin.writeFolded(folded);
+ }
+ function openMenuForFolder(e, folder) {
+ return __async(this, null, function* () {
+ const items = [];
+ for (const feed of $sortedFeedsStore[folder]) {
+ for (let item of feed.items) {
+ items.push(item);
+ }
+ }
+ yield openMenu(e, items);
+ });
+ }
+ function openMenu(e, feedItems) {
+ return __async(this, null, function* () {
+ const menu = new import_obsidian15.Menu(plugin.app);
+ menu.addItem((menuItem) => {
+ menuItem.setIcon("create-new").setTitle(t("create_all")).onClick(() => __async(this, null, function* () {
+ for (const item of feedItems) {
+ yield Action.CREATE_NOTE.processor(plugin, item);
+ }
+ }));
+ });
+ menu.addItem((menuItem) => {
+ menuItem.setIcon("feather-eye").setTitle(t("mark_all_as_read")).onClick(() => __async(this, null, function* () {
+ for (const item of feedItems) {
+ item.read = true;
+ }
+ const items = plugin.settings.items;
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ }));
+ });
+ menu.showAtPosition({ x: e.x, y: e.y });
+ });
+ }
+ const click_handler = () => toggleFold("rss-filters");
+ const contextmenu_handler = (folder, e) => openMenu(e, folder.filter.items.items);
+ const click_handler_1 = (folder) => toggleFold("rss-filters-" + folder.name);
+ const click_handler_2 = (child) => toggleFold("rss-filters-" + child.filter.filter.name);
+ const click_handler_3 = () => toggleFold("rss-folders");
+ const click_handler_4 = (folder) => toggleFold(folder);
+ const contextmenu_handler_1 = (folder, e) => openMenuForFolder(e, folder);
+ $$self.$$set = ($$props2) => {
+ if ("plugin" in $$props2)
+ $$invalidate(0, plugin = $$props2.plugin);
+ };
+ return [
+ plugin,
+ folded,
+ $sortedFeedsStore,
+ $filteredItemsStore,
+ $settingsStore,
+ toggleFold,
+ openMenuForFolder,
+ openMenu,
+ click_handler,
+ contextmenu_handler,
+ click_handler_1,
+ click_handler_2,
+ click_handler_3,
+ click_handler_4,
+ contextmenu_handler_1
+ ];
+}
+var FolderView = class extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance8, create_fragment8, safe_not_equal, { plugin: 0 });
+ }
+};
+var FolderView_default = FolderView;
+
+// src/view/ViewLoader.ts
+var ViewLoader = class extends import_obsidian16.ItemView {
+ constructor(leaf, plugin) {
+ super(leaf);
+ this.plugin = plugin;
+ }
+ getDisplayText() {
+ return t("RSS_Feeds");
+ }
+ getViewType() {
+ return VIEW_ID;
+ }
+ getIcon() {
+ return "rss";
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ this.feed = new FolderView_default({
+ target: this.contentEl,
+ props: {
+ plugin: this.plugin
+ }
+ });
+ });
+ }
+ onClose() {
+ if (this.feed) {
+ this.feed.$destroy();
+ }
+ return Promise.resolve();
+ }
+};
+
+// src/main.ts
+var import_lodash6 = __toModule(require_lodash());
+var import_lodash7 = __toModule(require_lodash2());
+var import_lodash8 = __toModule(require_lodash3());
+var import_lodash9 = __toModule(require_lodash4());
+
+// src/modals/FilteredFolderModal.ts
+var import_obsidian17 = __toModule(require("obsidian"));
+var FilterType;
+(function(FilterType2) {
+ FilterType2[FilterType2["UNREAD"] = 0] = "UNREAD";
+ FilterType2[FilterType2["READ"] = 1] = "READ";
+ FilterType2[FilterType2["FAVORITES"] = 2] = "FAVORITES";
+})(FilterType || (FilterType = {}));
+var SortOrder;
+(function(SortOrder2) {
+ SortOrder2[SortOrder2["DATE_NEWEST"] = 0] = "DATE_NEWEST";
+ SortOrder2[SortOrder2["DATE_OLDEST"] = 1] = "DATE_OLDEST";
+ SortOrder2[SortOrder2["ALPHABET_NORMAL"] = 2] = "ALPHABET_NORMAL";
+ SortOrder2[SortOrder2["ALPHABET_INVERTED"] = 3] = "ALPHABET_INVERTED";
+})(SortOrder || (SortOrder = {}));
+var FilteredFolderModal = class extends BaseModal {
+ constructor(plugin, folder) {
+ super(plugin.app);
+ this.filterTags = [];
+ this.ignoreTags = [];
+ this.filterFolders = [];
+ this.ignoreFolders = [];
+ this.filterFeeds = [];
+ this.ignoreFeeds = [];
+ this.saved = false;
+ this.plugin = plugin;
+ if (folder) {
+ this.name = folder.name;
+ this.sortOrder = folder.sortOrder;
+ this.filterTags = folder.filterTags;
+ this.ignoreTags = folder.ignoreTags;
+ this.filterFolders = folder.filterFolders;
+ this.ignoreFolders = folder.ignoreFolders;
+ this.filterFeeds = folder.filterFeeds;
+ this.ignoreFeeds = folder.ignoreFeeds;
+ this.read = folder.read;
+ this.unread = folder.unread;
+ this.favorites = folder.favorites;
+ }
+ }
+ display() {
+ return __async(this, null, function* () {
+ const { contentEl } = this;
+ contentEl.empty();
+ let nameText;
+ const name = new import_obsidian17.Setting(contentEl).setName(t("name")).setDesc(t("filter_name_help")).addText((text2) => {
+ nameText = text2;
+ text2.setValue(this.name).onChange((value) => {
+ this.removeValidationError(text2);
+ this.name = value;
+ });
+ });
+ name.controlEl.addClass("rss-setting-input");
+ new import_obsidian17.Setting(contentEl).setName(t("only_favorites")).addToggle((toggle) => {
+ toggle.setValue(this.favorites).onChange((value) => {
+ this.favorites = value;
+ });
+ });
+ new import_obsidian17.Setting(contentEl).setName(t("show_read")).addToggle((toggle) => {
+ toggle.setValue(this.read).onChange((value) => {
+ this.read = value;
+ });
+ });
+ new import_obsidian17.Setting(contentEl).setName(t("show_unread")).addToggle((toggle) => {
+ toggle.setValue(this.unread).onChange((value) => {
+ this.unread = value;
+ });
+ });
+ const sorting = new import_obsidian17.Setting(contentEl).setName(t("sort")).addDropdown((dropdown) => {
+ for (const order2 in SortOrder) {
+ if (order2.length > 1) {
+ dropdown.addOption(order2, t("sort_" + order2.toLowerCase()));
+ }
+ }
+ dropdown.setValue(this.sortOrder).onChange((value) => __async(this, null, function* () {
+ this.sortOrder = value;
+ }));
+ });
+ sorting.controlEl.addClass("rss-setting-input");
+ const foldersDiv = contentEl.createDiv("folders");
+ foldersDiv.createEl("h2", { text: t("folders") });
+ foldersDiv.createEl("p", { text: t("filter_folder_help") });
+ for (const folder in this.filterFolders) {
+ new import_obsidian17.Setting(foldersDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, get_store_value(folderStore));
+ search.setValue(this.filterFolders[folder]).onChange((value) => __async(this, null, function* () {
+ this.removeValidationError(search);
+ this.filterFolders = this.filterFolders.filter((e) => e !== this.filterFolders[folder]);
+ this.filterFolders.push(value);
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.filterFolders = this.filterFolders.filter((e) => e !== this.filterFolders[folder]);
+ this.display();
+ });
+ });
+ }
+ let folderValue = "";
+ const newFolder = new import_obsidian17.Setting(foldersDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, get_store_value(folderStore));
+ search.onChange((value) => __async(this, null, function* () {
+ folderValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ this.filterFolders.push(folderValue);
+ this.display();
+ });
+ });
+ newFolder.controlEl.addClass("rss-setting-input");
+ foldersDiv.createEl("p", { text: t("filter_folder_ignore_help") });
+ for (const folder in this.ignoreFolders) {
+ new import_obsidian17.Setting(foldersDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, get_store_value(folderStore));
+ search.setValue(this.ignoreFolders[folder]).onChange((value) => __async(this, null, function* () {
+ this.removeValidationError(search);
+ this.ignoreFolders = this.ignoreFolders.filter((e) => e !== this.ignoreFolders[folder]);
+ this.ignoreFolders.push(value);
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.ignoreFolders = this.ignoreFolders.filter((e) => e !== this.ignoreFolders[folder]);
+ this.display();
+ });
+ });
+ }
+ let folderIgnoreValue = "";
+ const newIgnoreFolder = new import_obsidian17.Setting(foldersDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, get_store_value(folderStore));
+ search.onChange((value) => __async(this, null, function* () {
+ folderIgnoreValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ this.ignoreFolders.push(folderIgnoreValue);
+ this.display();
+ });
+ });
+ newIgnoreFolder.controlEl.addClass("rss-setting-input");
+ const feedsDiv = contentEl.createDiv("feeds");
+ feedsDiv.createEl("h2", { text: t("feeds") });
+ feedsDiv.createEl("p", { text: t("filter_feed_help") });
+ const feeds = this.plugin.settings.feeds.filter((feed) => {
+ if (this.filterFolders.length === 0)
+ return true;
+ return this.filterFolders.contains(feed.folder);
+ }).map((feed) => feed.name);
+ for (const feed in this.filterFeeds) {
+ new import_obsidian17.Setting(feedsDiv).addText((text2) => {
+ text2.setDisabled(true).setValue(this.filterFeeds[feed]);
+ }).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.filterFeeds = this.filterFeeds.filter((e) => e !== this.filterFeeds[feed]);
+ this.display();
+ });
+ });
+ }
+ let feedValue = "";
+ const newFeed = new import_obsidian17.Setting(feedsDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, new Set(feeds));
+ search.onChange((value) => __async(this, null, function* () {
+ const feeds2 = this.plugin.settings.feeds.filter((feed) => feed.name === feedIgnoreValue).length;
+ if (feeds2 !== 1) {
+ this.setValidationError(search, t("no_feed_with_name"));
+ return;
+ }
+ feedValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ const feeds2 = this.plugin.settings.feeds.filter((feed) => feed.name === feedIgnoreValue).length;
+ if (feeds2 !== 1)
+ return;
+ this.filterFeeds.push(feedValue);
+ this.display();
+ });
+ });
+ newFeed.controlEl.addClass("rss-setting-input");
+ feedsDiv.createEl("p", { text: t("filter_feed_ignore_help") });
+ for (const feed in this.ignoreFeeds) {
+ new import_obsidian17.Setting(feedsDiv).addText((text2) => {
+ text2.setDisabled(true).setValue(this.ignoreFeeds[feed]);
+ }).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.ignoreFeeds = this.ignoreFeeds.filter((e) => e !== this.ignoreFeeds[feed]);
+ this.display();
+ });
+ });
+ }
+ let feedIgnoreValue = "";
+ const newIgnoreFeed = new import_obsidian17.Setting(feedsDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, new Set(feeds));
+ search.onChange((value) => __async(this, null, function* () {
+ const feeds2 = this.plugin.settings.feeds.filter((feed) => feed.name === feedIgnoreValue).length;
+ if (feeds2 !== 1) {
+ this.setValidationError(search, t("no_feed_with_name"));
+ return;
+ }
+ feedIgnoreValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ const feeds2 = this.plugin.settings.feeds.filter((feed) => feed.name === feedIgnoreValue).length;
+ if (feeds2 !== 1)
+ return;
+ this.ignoreFeeds.push(feedIgnoreValue);
+ this.display();
+ });
+ });
+ newIgnoreFeed.controlEl.addClass("rss-setting-input");
+ const tagDiv = contentEl.createDiv("tags");
+ tagDiv.createEl("h2", { text: t("tags") });
+ tagDiv.createEl("p", { text: t("filter_tags_help") });
+ for (const tag in this.filterTags) {
+ new import_obsidian17.Setting(tagDiv).addText((text2) => {
+ text2.setDisabled(true).setValue(this.filterTags[tag]);
+ }).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.filterTags = this.filterTags.filter((e) => e !== this.filterTags[tag]);
+ this.display();
+ });
+ });
+ }
+ let tagValue = "";
+ let tagComponent;
+ const newTag = new import_obsidian17.Setting(tagDiv).addSearch((search) => __async(this, null, function* () {
+ tagComponent = search;
+ new ArraySuggest(this.app, search.inputEl, get_store_value(tagsStore));
+ search.onChange((value) => __async(this, null, function* () {
+ if (!value.match(TAG_REGEX) || value.match(NUMBER_REGEX) || value.contains(" ") || value.contains("#")) {
+ this.setValidationError(search, t("invalid_tag"));
+ return;
+ }
+ tagValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ if (!tagValue.match(TAG_REGEX) || tagValue.match(NUMBER_REGEX) || tagValue.contains(" ") || tagValue.contains("#")) {
+ this.setValidationError(tagComponent, t("invalid_tag"));
+ return;
+ }
+ this.filterTags.push(tagValue);
+ this.display();
+ });
+ });
+ newTag.controlEl.addClass("rss-setting-input");
+ tagDiv.createEl("p", { text: t("filter_tags_ignore_help") });
+ for (const tag in this.ignoreTags) {
+ new import_obsidian17.Setting(tagDiv).addSearch((search) => __async(this, null, function* () {
+ new ArraySuggest(this.app, search.inputEl, get_store_value(tagsStore));
+ search.setValue(this.ignoreTags[tag]).onChange((value) => __async(this, null, function* () {
+ this.removeValidationError(search);
+ if (!value.match(TAG_REGEX) || value.match(NUMBER_REGEX) || value.contains(" ") || value.contains("#")) {
+ this.setValidationError(search, t("invalid_tag"));
+ return;
+ }
+ this.ignoreTags = this.ignoreTags.filter((e) => e !== this.ignoreTags[tag]);
+ this.ignoreTags.push(value);
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("delete")).setIcon("trash").onClick(() => {
+ this.ignoreTags = this.ignoreTags.filter((e) => e !== this.ignoreTags[tag]);
+ this.display();
+ });
+ });
+ }
+ let ignoreTagValue = "";
+ let ignoreTagComponent;
+ const newTagIgnore = new import_obsidian17.Setting(tagDiv).addSearch((search) => __async(this, null, function* () {
+ ignoreTagComponent = search;
+ new ArraySuggest(this.app, search.inputEl, get_store_value(tagsStore));
+ search.onChange((value) => __async(this, null, function* () {
+ if (!value.match(TAG_REGEX) || value.match(NUMBER_REGEX) || value.contains(" ") || value.contains("#")) {
+ this.setValidationError(search, t("invalid_tag"));
+ return;
+ }
+ ignoreTagValue = value;
+ }));
+ })).addExtraButton((button) => {
+ button.setTooltip(t("add")).setIcon("plus").onClick(() => {
+ if (!ignoreTagValue.match(TAG_REGEX) || ignoreTagValue.match(NUMBER_REGEX) || ignoreTagValue.contains(" ") || ignoreTagValue.contains("#")) {
+ this.setValidationError(ignoreTagComponent, t("invalid_tag"));
+ return;
+ }
+ this.ignoreTags.push(ignoreTagValue);
+ this.display();
+ });
+ });
+ newTagIgnore.controlEl.addClass("rss-setting-input");
+ const footerEl = contentEl.createDiv();
+ const footerButtons = new import_obsidian17.Setting(footerEl);
+ footerButtons.addButton((b) => {
+ b.setTooltip(t("save")).setIcon("checkmark").onClick(() => __async(this, null, function* () {
+ let error = false;
+ if (!nameText.getValue().length) {
+ this.setValidationError(nameText, t("invalid_name"));
+ error = true;
+ }
+ if (error) {
+ new import_obsidian17.Notice(t("fix_errors"));
+ return;
+ }
+ this.saved = true;
+ this.close();
+ }));
+ return b;
+ });
+ footerButtons.addExtraButton((b) => {
+ b.setIcon("cross").setTooltip(t("cancel")).onClick(() => {
+ this.saved = false;
+ this.close();
+ });
+ return b;
+ });
+ });
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ yield this.display();
+ });
+ }
+};
+
+// src/main.ts
+var import_ts_md53 = __toModule(require_md5());
+
+// src/settings/SettingsTab.ts
+var import_obsidian26 = __toModule(require("obsidian"));
+
+// src/settings/FolderSuggestor.ts
+var import_obsidian18 = __toModule(require("obsidian"));
+var FolderSuggest = class extends TextInputSuggest {
+ getSuggestions(inputStr) {
+ const abstractFiles = this.app.vault.getAllLoadedFiles();
+ const folders = [];
+ const lowerCaseInputStr = inputStr.toLowerCase();
+ abstractFiles.forEach((folder) => {
+ if (folder instanceof import_obsidian18.TFolder && folder.path.toLowerCase().contains(lowerCaseInputStr)) {
+ folders.push(folder);
+ }
+ });
+ return folders;
+ }
+ renderSuggestion(file, el) {
+ el.setText(file.path);
+ }
+ selectSuggestion(file) {
+ this.inputEl.value = file.path;
+ this.inputEl.trigger("input");
+ this.close();
+ }
+};
+
+// src/settings/FeedSettings.ts
+var import_lodash4 = __toModule(require_lodash5());
+var import_lodash5 = __toModule(require_lodash());
+var import_obsidian23 = __toModule(require("obsidian"));
+
+// src/modals/FeedModal.ts
+var import_obsidian19 = __toModule(require("obsidian"));
+
+// src/view/FeedFolderSuggest.ts
+var FeedFolderSuggest = class extends TextInputSuggest {
+ getSuggestions(inputStr) {
+ const folders = get_store_value(folderStore);
+ const lowerCaseInputStr = inputStr.toLowerCase();
+ return [...folders].filter((folder) => folder.contains(lowerCaseInputStr));
+ }
+ renderSuggestion(folder, el) {
+ el.setText(folder);
+ }
+ selectSuggestion(folder) {
+ this.inputEl.value = folder;
+ this.inputEl.trigger("input");
+ this.close();
+ }
+};
+
+// src/modals/FeedModal.ts
+var FeedModal = class extends BaseModal {
+ constructor(plugin, feed) {
+ super(plugin.app);
+ this.saved = false;
+ if (feed) {
+ this.name = feed.name;
+ this.url = feed.url;
+ this.folder = feed.folder;
+ }
+ }
+ display() {
+ return __async(this, null, function* () {
+ const { contentEl } = this;
+ contentEl.empty();
+ let nameText;
+ const name = new import_obsidian19.Setting(contentEl).setName(t("name")).setDesc(t("name_help")).addText((text2) => {
+ nameText = text2;
+ text2.setValue(this.name).onChange((value) => {
+ this.removeValidationError(text2);
+ this.name = value;
+ });
+ });
+ name.controlEl.addClass("rss-setting-input");
+ let urlText;
+ const url = new import_obsidian19.Setting(contentEl).setName("URL").setDesc(t("url_help")).addText((text2) => {
+ urlText = text2;
+ text2.setValue(this.url).onChange((value) => __async(this, null, function* () {
+ this.removeValidationError(text2);
+ this.url = value;
+ }));
+ });
+ url.controlEl.addClass("rss-setting-input");
+ new import_obsidian19.Setting(contentEl).setName(t("folder")).setDesc(t("folder_help")).addSearch((search) => __async(this, null, function* () {
+ new FeedFolderSuggest(this.app, search.inputEl);
+ search.setValue(this.folder).setPlaceholder(t("no_folder")).onChange((value) => __async(this, null, function* () {
+ this.folder = value;
+ }));
+ }));
+ const footerEl = contentEl.createDiv();
+ const footerButtons = new import_obsidian19.Setting(footerEl);
+ footerButtons.addButton((b) => {
+ b.setTooltip(t("save")).setIcon("checkmark").onClick(() => __async(this, null, function* () {
+ let error = false;
+ if (!nameText.getValue().length) {
+ this.setValidationError(nameText, t("invalid_name"));
+ error = true;
+ }
+ if (!urlText.getValue().length) {
+ this.setValidationError(urlText, t("invalid_url"));
+ error = true;
+ }
+ if (!isValidHttpUrl(urlText.getValue())) {
+ this.setValidationError(urlText, t("invalid_url"));
+ error = true;
+ } else {
+ const items = yield getFeedItems({ name: "test", url: urlText.getValue(), folder: "" });
+ if (items.items.length == 0) {
+ this.setValidationError(urlText, t("invalid_feed"));
+ error = true;
+ }
+ }
+ if (error) {
+ new import_obsidian19.Notice(t("fix_errors"));
+ return;
+ }
+ this.saved = true;
+ this.close();
+ }));
+ return b;
+ });
+ footerButtons.addExtraButton((b) => {
+ b.setIcon("cross").setTooltip(t("cancel")).onClick(() => {
+ this.saved = false;
+ this.close();
+ });
+ return b;
+ });
+ });
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ yield this.display();
+ });
+ }
+};
+
+// src/modals/ImportModal.ts
+var import_obsidian20 = __toModule(require("obsidian"));
+
+// src/parser/opmlParser.ts
+function loadFeedsFromString(importData, defaultFolder) {
+ return __async(this, null, function* () {
+ const rawData = new window.DOMParser().parseFromString(importData, "text/xml");
+ const feeds = [];
+ const outlines = rawData.getElementsByTagName("outline");
+ for (let i = 0, max2 = outlines.length; i < max2; i++) {
+ const current = outlines[i];
+ if (!current.hasChildNodes()) {
+ const title = current.getAttribute("title");
+ const xmlUrl = current.getAttribute("xmlUrl");
+ if (current.parentElement.hasAttribute("title")) {
+ feeds.push({
+ name: title,
+ url: xmlUrl,
+ folder: defaultFolder + (defaultFolder ? "/" : "") + current.parentElement.getAttribute("title")
+ });
+ } else {
+ feeds.push({
+ name: title,
+ url: xmlUrl,
+ folder: defaultFolder + ""
+ });
+ }
+ }
+ }
+ return feeds;
+ });
+}
+
+// src/modals/ImportModal.ts
+var ImportModal = class extends import_obsidian20.Modal {
+ constructor(plugin) {
+ super(plugin.app);
+ this.importData = "";
+ this.defaultFolder = "";
+ this.plugin = plugin;
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ const setting = new import_obsidian20.Setting(this.contentEl).setName(t("choose_file")).setDesc(t("choose_file_help"));
+ const input = setting.controlEl.createEl("input", {
+ attr: {
+ type: "file",
+ accept: ".xml,.opml"
+ }
+ });
+ input.onchange = () => __async(this, null, function* () {
+ const { files } = input;
+ if (!files.length)
+ return;
+ for (const id in files) {
+ const file = files[id];
+ const reader = new FileReader();
+ reader.onload = () => {
+ this.importData = reader.result;
+ };
+ reader.readAsText(file);
+ }
+ });
+ new import_obsidian20.Setting(this.contentEl).setName(t("base_folder")).addSearch((search) => {
+ new FeedFolderSuggest(this.app, search.inputEl);
+ search.setValue(this.defaultFolder).onChange((value) => {
+ this.defaultFolder = value;
+ });
+ });
+ new import_obsidian20.Setting(this.contentEl).addButton((button) => {
+ button.setIcon("import-glyph").setTooltip(t("import")).onClick(() => __async(this, null, function* () {
+ if (this.importData) {
+ const feeds = yield loadFeedsFromString(this.importData, this.defaultFolder);
+ yield this.plugin.writeFeeds(() => this.plugin.settings.feeds.concat(feeds));
+ new import_obsidian20.Notice(t("imported_x_feeds", String(feeds.length)));
+ this.close();
+ } else {
+ new import_obsidian20.Notice(t("fix_errors"));
+ }
+ }));
+ }).addExtraButton((button) => {
+ button.setIcon("cross").setTooltip(t("cancel")).onClick(() => {
+ this.close();
+ });
+ });
+ });
+ }
+};
+
+// src/settings/FeedSettings.ts
+var import_ts_md52 = __toModule(require_md5());
+
+// src/modals/CleanupModal.ts
+var import_obsidian21 = __toModule(require("obsidian"));
+var import_lodash = __toModule(require_lodash5());
+var import_lodash2 = __toModule(require_lodash());
+var CleanupModal = class extends BaseModal {
+ constructor(plugin) {
+ super(plugin.app);
+ this.tag = "";
+ this.feed = "wallabag.xml-option-id";
+ this.plugin = plugin;
+ }
+ onOpen() {
+ return __async(this, null, function* () {
+ const { contentEl } = this;
+ contentEl.empty();
+ contentEl.createEl("h1", { text: t("cleanup") });
+ contentEl.createEl("p", { text: t("cleanup_help") });
+ contentEl.createEl("p", { text: t("cleanup_help2") });
+ new import_obsidian21.Setting(contentEl).setName(t("unread")).addToggle((toggle) => {
+ toggle.onChange((value) => {
+ this.unread = value;
+ });
+ });
+ new import_obsidian21.Setting(contentEl).setName(t("read")).addToggle((toggle) => {
+ toggle.onChange((value) => {
+ this.read = value;
+ });
+ });
+ new import_obsidian21.Setting(contentEl).setName(t("favorite")).addToggle((toggle) => {
+ toggle.onChange((value) => {
+ this.favorite = value;
+ });
+ });
+ new import_obsidian21.Setting(contentEl).setName(t("tag")).addSearch((search) => {
+ const tags = [];
+ for (const feed of this.plugin.settings.items) {
+ for (const item of feed.items) {
+ if (item !== void 0)
+ tags.push(...item.tags);
+ }
+ }
+ new ArraySuggest(this.app, search.inputEl, new Set(tags));
+ search.onChange((value) => __async(this, null, function* () {
+ this.tag = value;
+ }));
+ });
+ let older_than_setting;
+ new import_obsidian21.Setting(contentEl).setName(t("older_than")).setDesc(t("older_than_help")).addText((text2) => {
+ older_than_setting = text2;
+ text2.setPlaceholder("5").onChange((value) => {
+ this.removeValidationError(text2);
+ if (Number(value)) {
+ this.older_than = Number(value);
+ }
+ });
+ }).controlEl.addClass("rss-setting-input");
+ older_than_setting.inputEl.setAttr("onkeypress", "return event.charCode >= 48 && event.charCode <= 57");
+ new import_obsidian21.Setting(contentEl).setName(t("from_feed")).addDropdown((dropdown) => {
+ dropdown.addOption("wallabag.xml-option-id", t("all"));
+ const sorted = (0, import_lodash.default)((0, import_lodash2.default)(this.plugin.settings.feeds, "folder"), function(o) {
+ return o[0].folder;
+ });
+ for (const [, feeds] of Object.entries(sorted)) {
+ for (const id in feeds) {
+ const feed = feeds[id];
+ dropdown.addOption(feed.folder + "-" + feed.name, feed.folder + " - " + feed.name);
+ }
+ dropdown.setValue(this.feed);
+ }
+ dropdown.onChange((value) => {
+ this.feed = value;
+ });
+ });
+ const details = contentEl.createEl("details");
+ const summary = details.createEl("summary");
+ summary.setText(t("advanced"));
+ const advanced = details.createDiv("advanced");
+ new import_obsidian21.Setting(advanced).setName(t("remove_wrong_feed")).setDesc(t("remove_wrong_feed_help")).addToggle((toggle) => {
+ toggle.onChange((value) => {
+ this.wrong_feed = value;
+ });
+ });
+ new import_obsidian21.Setting(contentEl).addButton((button) => {
+ button.setIcon("feather-trash").setTooltip(t("perform_cleanup")).onClick(() => __async(this, null, function* () {
+ let items = this.plugin.settings.items;
+ let date = (0, import_obsidian21.moment)();
+ if (this.older_than) {
+ date = (0, import_obsidian21.moment)().subtract(this.older_than, "days");
+ }
+ let count = 0;
+ const itemsCount = items.reduce((count2, current) => count2 + current.items.length, 0);
+ const notice = new import_obsidian21.Notice(t("scanning_items", "0", itemsCount.toString()));
+ for (const feed of items) {
+ for (const item of feed.items) {
+ if (item !== void 0) {
+ let toRemove = 0;
+ if (item.pubDate === void 0 || (0, import_obsidian21.moment)(item.pubDate).isBefore(date)) {
+ if (this.feed === "wallabag.xml-option-id" || this.feed === item.folder + "-" + item.feed) {
+ if (this.read && item.read || !this.read && !item.read || this.read && !item.read) {
+ toRemove++;
+ }
+ if (this.unread && !item.read || !this.unread && item.read) {
+ toRemove++;
+ }
+ if (this.favorite && item.favorite || !this.favorite && !item.favorite || this.favorite && !item.favorite) {
+ toRemove++;
+ }
+ if (this.tag === "" || item.tags.includes(this.tag)) {
+ toRemove++;
+ }
+ }
+ }
+ if (toRemove == 4) {
+ feed.items = feed.items.filter((value) => value.hash !== item.hash);
+ }
+ }
+ count++;
+ notice.setMessage(t("scanning_items", count.toString(), itemsCount.toString()));
+ }
+ }
+ if (this.wrong_feed) {
+ console.log("removing invalid feeds");
+ const feeds = this.plugin.settings.feeds.map((feed) => {
+ return feed.name;
+ });
+ items = items.filter((item) => {
+ return feeds.includes(item.name);
+ });
+ const folders = get_store_value(folderStore);
+ items = items.filter((item) => {
+ return folders.has(item.folder);
+ });
+ items.forEach((feed) => {
+ feed.items = feed.items.filter((item) => {
+ return feed.name === item.feed && feed.folder === item.folder;
+ });
+ });
+ }
+ yield this.plugin.writeFeedContent(() => {
+ return items;
+ });
+ this.close();
+ }));
+ }).addExtraButton((button) => {
+ button.setIcon("cross").setTooltip(t("cancel")).onClick(() => {
+ this.close();
+ });
+ });
+ });
+ }
+};
+
+// src/parser/opmlExport.ts
+var import_lodash3 = __toModule(require_lodash());
+function generateOPML(feeds) {
+ const doc = document.implementation.createDocument("", "opml");
+ const head = doc.createElement("head");
+ const title = doc.createElement("title");
+ head.appendChild(title);
+ title.setText("Obsidian RSS Export");
+ doc.documentElement.appendChild(head);
+ const body = doc.createElement("body");
+ doc.documentElement.appendChild(body);
+ const sorted = (0, import_lodash3.default)(feeds, "folder");
+ for (const id of Object.keys(sorted)) {
+ const folder = sorted[id];
+ const outline = doc.createElement("outline");
+ body.appendChild(outline);
+ outline.setAttribute("title", folder[0].folder);
+ for (const feed of folder) {
+ const exportFeed = doc.createElement("outline");
+ exportFeed.setAttribute("title", feed.name);
+ exportFeed.setAttribute("xmlUrl", feed.url);
+ outline.append(exportFeed);
+ }
+ }
+ return new XMLSerializer().serializeToString(doc.documentElement);
+}
+
+// src/modals/MessageModal.ts
+var import_obsidian22 = __toModule(require("obsidian"));
+var MessageModal = class extends import_obsidian22.Modal {
+ constructor(plugin, message) {
+ super(plugin.app);
+ this.message = message;
+ }
+ onOpen() {
+ this.display();
+ }
+ display() {
+ const { contentEl } = this;
+ contentEl.empty();
+ contentEl.createEl("h1", { text: this.message });
+ contentEl.createEl("p", { text: t("do_not_close") });
+ }
+ setMessage(message) {
+ this.message = message;
+ this.display();
+ }
+};
+
+// src/settings/FeedSettings.ts
+function displayFeedSettings(plugin, container) {
+ container.empty();
+ container.createEl("h3", { text: t("feeds") });
+ new import_obsidian23.Setting(container).setName(t("add_new")).setDesc(t("add_new_feed")).addButton((button) => {
+ return button.setTooltip(t("add_new_feed")).setIcon("plus").onClick(() => __async(this, null, function* () {
+ const modal = new FeedModal(plugin);
+ modal.onClose = () => __async(this, null, function* () {
+ if (modal.saved) {
+ if (plugin.settings.feeds.some((item) => item.url === modal.url)) {
+ new import_obsidian23.Notice(t("feed_already_configured"));
+ return;
+ }
+ yield plugin.writeFeeds(() => plugin.settings.feeds.concat({
+ name: modal.name,
+ url: modal.url,
+ folder: modal.folder ? modal.folder : ""
+ }));
+ displayFeedSettings(plugin, container);
+ }
+ });
+ modal.open();
+ }));
+ }).addExtraButton((button) => __async(this, null, function* () {
+ button.setTooltip(t("import_opml")).setIcon("download").onClick(() => {
+ const modal = new ImportModal(plugin);
+ modal.onClose = () => {
+ displayFeedSettings(plugin, container);
+ };
+ modal.open();
+ });
+ })).addExtraButton((button) => __async(this, null, function* () {
+ button.setTooltip(t("export_opml")).setIcon("upload").onClick(() => {
+ if (plugin.app.vault.adapter.exists("rss-feeds-export.opml")) {
+ plugin.app.vault.adapter.remove("rss-feeds-export.opml");
+ }
+ plugin.app.vault.create("rss-feeds-export.opml", generateOPML(plugin.settings.feeds));
+ new import_obsidian23.Notice(t("created_export"));
+ });
+ })).addExtraButton((button) => __async(this, null, function* () {
+ button.setTooltip(t("perform_cleanup")).setIcon("lucide-trash").onClick(() => {
+ new CleanupModal(plugin).open();
+ });
+ }));
+ const feedsDiv = container.createDiv("feeds");
+ displayFeedList(plugin, feedsDiv);
+}
+function displayFeedList(plugin, container, disabled = false) {
+ container.empty();
+ const sorted = (0, import_lodash4.default)((0, import_lodash5.default)(plugin.settings.feeds, "folder"), function(o) {
+ return o[0].folder;
+ });
+ for (const [, feeds] of Object.entries(sorted)) {
+ for (const id in feeds) {
+ const feed = feeds[id];
+ const setting = new import_obsidian23.Setting(container);
+ setting.setName((feed.folder ? feed.folder : t("no_folder")) + " - " + feed.name);
+ setting.setDesc(feed.url);
+ setting.addExtraButton((b) => {
+ b.setDisabled(disabled).setIcon("edit").setTooltip(t("edit")).onClick(() => {
+ const modal = new FeedModal(plugin, feed);
+ const oldFeed = feed;
+ modal.onClose = () => __async(this, null, function* () {
+ if (modal.saved) {
+ const feeds2 = plugin.settings.feeds;
+ feeds2.remove(oldFeed);
+ feeds2.push({
+ name: modal.name,
+ url: modal.url,
+ folder: modal.folder ? modal.folder : ""
+ });
+ let items = plugin.settings.items;
+ items = items.filter((content) => {
+ return content.name === oldFeed.name && content.folder === oldFeed.folder;
+ });
+ items.forEach((content) => {
+ content.name = modal.name;
+ content.folder = modal.folder;
+ content.hash = new import_ts_md52.Md5().appendStr(modal.name).appendStr(modal.folder).end();
+ content.items.forEach((item) => {
+ item.feed = modal.name;
+ item.folder = modal.folder ? modal.folder : "";
+ item.hash = new import_ts_md52.Md5().appendStr(item.title).appendStr(item.folder).appendStr(item.link).end();
+ });
+ });
+ yield plugin.writeFeedContent(() => {
+ return items;
+ });
+ yield plugin.writeFeeds(() => feeds2);
+ displayFeedList(plugin, container);
+ }
+ });
+ modal.open();
+ });
+ }).addExtraButton((button) => {
+ button.setDisabled(disabled).setTooltip(t("from_archive")).setIcon("archive").onClick(() => __async(this, null, function* () {
+ const modal = new MessageModal(plugin, t("reading_archive"));
+ modal.open();
+ displayFeedList(plugin, container, true);
+ const timemap = yield (0, import_obsidian23.request)({
+ method: "GET",
+ url: "https://web.archive.org/web/timemap/link/" + feed.url
+ });
+ const items = [];
+ const lines = timemap.split("\n");
+ for (const line of lines) {
+ if (line.contains("memento")) {
+ const link = line.slice(1, line.indexOf(">"));
+ const first = link.substring(0, 41);
+ const second = link.substring(42);
+ items.push(yield getFeedItems({
+ name: feed.name,
+ url: first + "id_" + second,
+ folder: feed.folder
+ }));
+ }
+ }
+ modal.setMessage(t("scanning_duplicates"));
+ for (const feed2 of plugin.settings.items) {
+ for (const content of items) {
+ if (feed2.folder === content.folder && feed2.name === content.name) {
+ const sortedItems = content.items.sort((a, b) => {
+ return (0, import_obsidian23.moment)(b.pubDate).diff((0, import_obsidian23.moment)(a.pubDate));
+ });
+ for (const item of sortedItems) {
+ const filter = feed2.items.filter((filterItem) => {
+ return filterItem.folder === item.folder && filterItem.title === item.title;
+ });
+ if (filter.length === 0) {
+ feed2.items.push(item);
+ }
+ }
+ }
+ }
+ }
+ yield plugin.writeFeedContent(() => {
+ return plugin.settings.items;
+ });
+ displayFeedList(plugin, container, false);
+ modal.setMessage(t("refreshed_feeds"));
+ modal.close();
+ }));
+ }).addExtraButton((b) => {
+ b.setDisabled(disabled).setIcon("lucide-trash").setTooltip(t("delete")).onClick(() => __async(this, null, function* () {
+ const feeds2 = plugin.settings.feeds;
+ feeds2.remove(feed);
+ yield plugin.writeFeeds(() => feeds2);
+ let content = plugin.settings.items;
+ content = content.filter((content2) => {
+ return content2.name !== feed.name;
+ });
+ yield plugin.writeFeedContent(() => content);
+ displayFeedList(plugin, container);
+ }));
+ });
+ }
+ }
+}
+
+// src/settings/HotkeySettings.ts
+var import_obsidian24 = __toModule(require("obsidian"));
+function displayHotkeys(plugin, containerEl) {
+ containerEl.empty();
+ containerEl.createEl("h2", { text: t("hotkeys") });
+ containerEl.createEl("h3", { text: t("hotkeys_reading") });
+ new import_obsidian24.Setting(containerEl).setName(t("create_note")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.create).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ create: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("paste_to_note")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.paste).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ paste: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("open_browser")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.open).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ open: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("copy_to_clipboard")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.copy).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ copy: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("mark_as_favorite_remove")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.favorite).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ favorite: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("mark_as_read_unread")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.read).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, this.plugin.settings.hotkeys), {
+ read: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("edit_tags")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.tags).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ tags: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("next")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.next).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ next: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ new import_obsidian24.Setting(containerEl).setName(t("previous")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.previous).setTooltip(t("customize_hotkey")).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ previous: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ if (plugin.app.plugins.plugins["obsidian-tts"]) {
+ new import_obsidian24.Setting(containerEl).setName(t("read_article_tts")).setTooltip(t("customize_hotkey")).addButton((button) => {
+ button.setButtonText(plugin.settings.hotkeys.tts).onClick(() => {
+ button.setButtonText(t("press_key"));
+ const listener = (e) => __async(this, null, function* () {
+ window.removeEventListener("keyup", listener);
+ yield plugin.writeSettings(() => ({
+ hotkeys: __spreadProps(__spreadValues({}, plugin.settings.hotkeys), {
+ tts: e.key
+ })
+ }));
+ displayHotkeys(plugin, containerEl);
+ });
+ window.addEventListener("keyup", listener);
+ });
+ });
+ }
+}
+
+// src/settings/FilterSettings.ts
+var import_obsidian25 = __toModule(require("obsidian"));
+function displayFilterSettings(plugin, containerEl) {
+ containerEl.empty();
+ containerEl.createEl("hr", { attr: { style: "border-top: 5px solid var(--background-modifier-border);" } });
+ containerEl.createEl("h3", { text: t("filtered_folders") });
+ new import_obsidian25.Setting(containerEl).setName(t("add_new")).setDesc(t("add_new_filter")).addButton((button) => {
+ return button.setTooltip(t("add_new_filter")).setIcon("plus").onClick(() => __async(this, null, function* () {
+ const modal = new FilteredFolderModal(plugin);
+ modal.onClose = () => __async(this, null, function* () {
+ if (modal.saved) {
+ if (plugin.settings.filtered.some((folder) => folder.name === modal.name)) {
+ new import_obsidian25.Notice(t("filter_exists"));
+ return;
+ }
+ yield plugin.writeFiltered(() => plugin.settings.filtered.concat({
+ name: modal.name,
+ sortOrder: modal.sortOrder,
+ filterFeeds: modal.filterFeeds,
+ filterFolders: modal.filterFolders,
+ filterTags: modal.filterTags,
+ favorites: modal.favorites,
+ ignoreFolders: modal.ignoreFolders,
+ ignoreFeeds: modal.ignoreFeeds,
+ ignoreTags: modal.ignoreTags,
+ read: modal.read,
+ unread: modal.unread
+ }));
+ displayFilterSettings(plugin, containerEl);
+ }
+ });
+ modal.open();
+ }));
+ });
+ const filterContainer = containerEl.createDiv("filter-container");
+ const filtersDiv = filterContainer.createDiv("filters");
+ for (const id in plugin.settings.filtered.sort((a, b) => a.name.localeCompare(b.name))) {
+ const filter = plugin.settings.filtered[id];
+ if (filter === void 0) {
+ continue;
+ }
+ const setting = new import_obsidian25.Setting(filtersDiv);
+ setting.setName(filter.name);
+ const description = [];
+ if (filter.read)
+ description.push(t("read"));
+ if (filter.unread)
+ description.push(t("unread"));
+ if (filter.favorites)
+ description.push(t("favorites"));
+ let message = "";
+ if (filter.filterFolders !== void 0 && filter.filterFolders.length > 0) {
+ const folders = filter.filterFolders.join(",");
+ message += "; " + t("from_folders") + folders;
+ }
+ if (filter.filterFeeds !== void 0 && filter.filterFeeds.length > 0) {
+ const feeds = filter.filterFeeds.join(",");
+ message += "; " + t("from_feeds") + feeds;
+ }
+ if (filter.filterTags !== void 0 && filter.filterTags.length > 0) {
+ const tags = filter.filterTags.join(",");
+ message += "; " + t("with_tags") + tags;
+ }
+ setting.setDesc(description.join(",") + message);
+ setting.addExtraButton((b) => {
+ b.setIcon("edit").setTooltip(t("edit")).onClick(() => {
+ const modal = new FilteredFolderModal(plugin, filter);
+ const oldFilter = filter;
+ modal.onClose = () => __async(this, null, function* () {
+ if (modal.saved) {
+ const filters = plugin.settings.filtered;
+ filters.remove(oldFilter);
+ filters.push({
+ name: modal.name,
+ sortOrder: modal.sortOrder,
+ filterFeeds: modal.filterFeeds,
+ filterFolders: modal.filterFolders,
+ filterTags: modal.filterTags,
+ ignoreFolders: modal.ignoreFolders,
+ ignoreFeeds: modal.ignoreFeeds,
+ ignoreTags: modal.ignoreTags,
+ favorites: modal.favorites,
+ read: modal.read,
+ unread: modal.unread
+ });
+ yield plugin.writeFiltered(() => filters);
+ displayFilterSettings(plugin, containerEl);
+ }
+ });
+ modal.open();
+ });
+ }).addExtraButton((b) => {
+ b.setIcon("lucide-trash").setTooltip(t("delete")).onClick(() => __async(this, null, function* () {
+ const filters = plugin.settings.filtered;
+ filters.remove(filter);
+ yield plugin.writeFiltered(() => filters);
+ displayFilterSettings(plugin, containerEl);
+ }));
+ });
+ }
+}
+
+// src/settings/SettingsTab.ts
+var RSSReaderSettingsTab = class extends import_obsidian26.PluginSettingTab {
+ constructor(app, plugin) {
+ super(app, plugin);
+ this.plugin = plugin;
+ }
+ display() {
+ const { containerEl } = this;
+ containerEl.empty();
+ containerEl.createEl("h2", { text: t("RSS_Reader") + " " + t("settings") });
+ containerEl.createEl("h3", { text: t("file_creation") });
+ const templateDesc = new DocumentFragment();
+ templateDesc.createDiv().innerHTML = t("template_new_help") + "
" + t("available_variables") + `
{{title}} \u2192 ${t("article_title")}
{{link}} \u2192 ${t("article_link")}
{{author}} \u2192 ${t("article_author")}
{{published}} \u2192 ${t("article_published")}
{{created}} \u2192 ${t("note_created")}
{{description}} \u2192 ${t("article_description")}
{{content}} \u2192 ${t("article_content")}
{{folder}} \u2192 ${t("feed_folder")}
{{feed}} \u2192 ${t("feed_title")}
{{filename}} \u2192 ${t("filename")}
{{tags}} \u2192 ${t("article_tags")}
{{media}} \u2192 ${t("article_media")}
{{highlights}} \u2192 ${t("highlights")}`;
+ new import_obsidian26.Setting(containerEl).setName(t("template_new")).setDesc(templateDesc).addTextArea((textArea) => {
+ textArea.setValue(this.plugin.settings.template).setPlaceholder(DEFAULT_SETTINGS.template).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ template: value
+ }));
+ }));
+ textArea.inputEl.setAttr("rows", 15);
+ textArea.inputEl.setAttr("cols", 50);
+ });
+ const pasteTemplateDesc = new DocumentFragment();
+ pasteTemplateDesc.createDiv().innerHTML = t("template_new_help") + "
" + t("available_variables") + `
{{title}} \u2192 ${t("article_title")}
{{link}} \u2192 ${t("article_link")}
{{author}} \u2192 ${t("article_author")}
{{published}} \u2192 ${t("article_published")}
{{created}} \u2192 ${t("note_created")}
{{description}} \u2192 ${t("article_description")}
{{content}} \u2192 ${t("article_content")}
{{folder}} \u2192 ${t("feed_folder")}
{{feed}} \u2192 ${t("feed_title")}
{{tags}} \u2192 ${t("article_tags")}
{{media}} \u2192 ${t("article_media")}
{{highlights}} \u2192 ${t("highlights")}`;
+ new import_obsidian26.Setting(containerEl).setName(t("template_paste")).setDesc(pasteTemplateDesc).addTextArea((textArea) => {
+ textArea.setValue(this.plugin.settings.pasteTemplate).setPlaceholder(DEFAULT_SETTINGS.pasteTemplate).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ pasteTemplate: value
+ }));
+ }));
+ textArea.inputEl.setAttr("rows", 15);
+ textArea.inputEl.setAttr("cols", 50);
+ });
+ new import_obsidian26.Setting(containerEl).setName(t("file_location")).setDesc(t("file_location_help")).addDropdown((dropdown) => __async(this, null, function* () {
+ dropdown.addOption("default", t("file_location_default")).addOption("custom", t("file_location_custom")).setValue(this.plugin.settings.saveLocation).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({ saveLocation: value }));
+ this.display();
+ }));
+ }));
+ if (this.plugin.settings.saveLocation == "custom") {
+ new import_obsidian26.Setting(containerEl).setName(t("file_location_folder")).setDesc(t("file_location_folder_help")).addSearch((search) => __async(this, null, function* () {
+ new FolderSuggest(this.app, search.inputEl);
+ search.setValue(this.plugin.settings.saveLocationFolder).setPlaceholder(DEFAULT_SETTINGS.saveLocationFolder).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({ saveLocationFolder: value }));
+ }));
+ }));
+ }
+ let dateFormatSampleEl;
+ const dateFormat = new import_obsidian26.Setting(containerEl).setName(t("date_format")).addMomentFormat((format2) => {
+ dateFormatSampleEl = format2.setDefaultFormat(DEFAULT_SETTINGS.dateFormat).setPlaceholder(DEFAULT_SETTINGS.dateFormat).setValue(this.plugin.settings.dateFormat).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({ dateFormat: value }));
+ }));
+ });
+ const referenceLink = dateFormat.descEl.createEl("a");
+ referenceLink.setAttr("href", "https://momentjs.com/docs/#/displaying/format/");
+ referenceLink.setText(t("syntax_reference"));
+ const text2 = dateFormat.descEl.createDiv("text");
+ text2.setText(t("syntax_looks"));
+ const sampleEl = text2.createSpan("sample");
+ dateFormatSampleEl.setSampleEl(sampleEl);
+ dateFormat.addExtraButton((button) => {
+ button.setIcon("reset").setTooltip(t("reset")).onClick(() => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ dateFormat: DEFAULT_SETTINGS.dateFormat
+ }));
+ this.display();
+ }));
+ });
+ new import_obsidian26.Setting(containerEl).setName(t("ask_filename")).setDesc(t("ask_filename_help")).addToggle((toggle) => {
+ toggle.setValue(this.plugin.settings.askForFilename).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ askForFilename: value
+ }));
+ }));
+ });
+ new import_obsidian26.Setting(containerEl).setName(t("default_filename")).setDesc(t("default_filename_help")).addText((text3) => {
+ text3.setPlaceholder(DEFAULT_SETTINGS.defaultFilename).setValue(this.plugin.settings.defaultFilename).onChange((value) => __async(this, null, function* () {
+ if (value.length > 0) {
+ yield this.plugin.writeSettings(() => ({
+ defaultFilename: value
+ }));
+ } else {
+ new import_obsidian26.Notice(t("fix_errors"));
+ }
+ }));
+ });
+ containerEl.createEl("hr", { attr: { style: "border-top: 5px solid var(--background-modifier-border);" } });
+ containerEl.createEl("h3", { text: "Misc" });
+ const refresh = new import_obsidian26.Setting(containerEl).setName(t("refresh_time")).setDesc(t("refresh_time_help")).addText((text3) => {
+ text3.setPlaceholder(String(DEFAULT_SETTINGS.updateTime)).setValue(String(this.plugin.settings.updateTime)).onChange((value) => __async(this, null, function* () {
+ if (value.length === 0) {
+ new import_obsidian26.Notice(t("specify_positive_number"));
+ return;
+ }
+ if (Number(value) < 0) {
+ new import_obsidian26.Notice(t("specify_positive_number"));
+ return;
+ }
+ yield this.plugin.writeSettings(() => ({ updateTime: Number(value) }));
+ }));
+ text3.inputEl.setAttr("type", "number");
+ text3.inputEl.setAttr("min", "1");
+ text3.inputEl.setAttr("onkeypress", "return event.charCode >= 48 && event.charCode <= 57");
+ });
+ refresh.addExtraButton((button) => {
+ button.setIcon("reset").setTooltip("restore default").onClick(() => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ updateTime: DEFAULT_SETTINGS.updateTime
+ }));
+ this.display();
+ }));
+ });
+ new import_obsidian26.Setting(containerEl).setName(t("multi_device_usage")).setDesc(t("multi_device_usage_help")).addToggle((toggle) => {
+ return toggle.setValue(this.plugin.settings.autoSync).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ autoSync: value
+ }));
+ }));
+ });
+ new import_obsidian26.Setting(containerEl).setName(t("display_style")).addDropdown((dropdown) => {
+ return dropdown.addOption("list", t("list")).addOption("cards", t("cards")).setValue(this.plugin.settings.displayStyle).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ displayStyle: value
+ }));
+ }));
+ });
+ containerEl.createEl("h2", { text: t("content") });
+ const filterContainer = containerEl.createDiv("filter-container");
+ displayFilterSettings(this.plugin, filterContainer);
+ const feedsContainer = containerEl.createDiv("feed-container");
+ displayFeedSettings(this.plugin, feedsContainer);
+ containerEl.createEl("hr", { attr: { style: "border-top: 5px solid var(--background-modifier-border);" } });
+ const hotkeyContainer = containerEl.createDiv("hotkey-container");
+ displayHotkeys(this.plugin, hotkeyContainer);
+ containerEl.createEl("hr", { attr: { style: "border-top: 5px solid var(--background-modifier-border);" } });
+ const details = containerEl.createEl("details");
+ const summary = details.createEl("summary");
+ summary.setText(t("advanced"));
+ const advanced = details.createDiv("advanced");
+ advanced.createEl("h3", { text: t("customize_terms") });
+ advanced.createSpan({ text: "Change a few selected terms here. You can help translating the plugin " });
+ advanced.createEl("a", { text: "here", href: "https://github.com/joethei/obsidian-rss/tree/master/src/l10n" });
+ new import_obsidian26.Setting(advanced).setName(t("folders")).addText((text3) => {
+ text3.setPlaceholder(t("folders")).setValue(this.plugin.settings.renamedText.folders).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ renamedText: __spreadProps(__spreadValues({}, this.plugin.settings.renamedText), {
+ folders: value
+ })
+ }));
+ }));
+ });
+ new import_obsidian26.Setting(advanced).setName(t("filtered_folders")).addText((text3) => {
+ text3.setPlaceholder(t("filtered_folders")).setValue(this.plugin.settings.renamedText.filtered_folders).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ renamedText: __spreadProps(__spreadValues({}, this.plugin.settings.renamedText), {
+ filtered_folders: value
+ })
+ }));
+ }));
+ });
+ new import_obsidian26.Setting(advanced).setName(t("no_folder")).addText((text3) => {
+ text3.setPlaceholder(t("no_folder")).setValue(this.plugin.settings.renamedText.no_folder).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ renamedText: __spreadProps(__spreadValues({}, this.plugin.settings.renamedText), {
+ no_folder: value
+ })
+ }));
+ }));
+ });
+ advanced.createEl("hr", { attr: { style: "border-top: 5px solid var(--background-modifier-border);" } });
+ new import_obsidian26.Setting(advanced).setName(t("display_media")).addToggle((toggle) => {
+ toggle.setValue(this.plugin.settings.displayMedia).onChange((value) => __async(this, null, function* () {
+ yield this.plugin.writeSettings(() => ({
+ displayMedia: value
+ }));
+ }));
+ });
+ }
+};
+
+// src/modals/ArticleSuggestModal.ts
+var import_obsidian27 = __toModule(require("obsidian"));
+var ArticleSuggestModal = class extends import_obsidian27.SuggestModal {
+ constructor(plugin, items) {
+ super(plugin.app);
+ this.plugin = plugin;
+ this.items = items;
+ }
+ getItems() {
+ return this.items;
+ }
+ onChooseSuggestion(item, _) {
+ this.close();
+ new ItemModal(this.plugin, item, this.items, false).open();
+ }
+ getSuggestions(query) {
+ return this.items.filter((item) => {
+ return item.title.toLowerCase().includes(query.toLowerCase()) || item.content.toLowerCase().includes(query.toLowerCase());
+ });
+ }
+ renderSuggestion(item, el) {
+ el.createEl("div", { text: item.title });
+ el.createEl("small", { text: (0, import_obsidian27.moment)(item.pubDate).format(this.plugin.settings.dateFormat) + " " + item.creator });
+ }
+};
+
+// src/main.ts
+var RssReaderPlugin = class extends import_obsidian28.Plugin {
+ onload() {
+ return __async(this, null, function* () {
+ console.log("loading plugin rss reader");
+ this.register(settingsStore.subscribe((value) => {
+ this.settings = value;
+ }));
+ yield this.loadSettings();
+ this.addCommand({
+ id: "rss-open",
+ name: t("open"),
+ checkCallback: (checking) => {
+ if (checking) {
+ return this.app.workspace.getLeavesOfType(VIEW_ID).length === 0;
+ }
+ this.initLeaf();
+ }
+ });
+ this.addCommand({
+ id: "rss-refresh",
+ name: t("refresh_feeds"),
+ callback: () => __async(this, null, function* () {
+ yield this.updateFeeds();
+ })
+ });
+ this.addCommand({
+ id: "rss-cleanup",
+ name: t("cleanup"),
+ callback: () => __async(this, null, function* () {
+ new CleanupModal(this).open();
+ })
+ });
+ this.addCommand({
+ id: "rss-open-feed",
+ name: "Open Feed from URL",
+ callback: () => __async(this, null, function* () {
+ const input = new TextInputPrompt(this.app, "URL", "URL", "", "", t("open"));
+ yield input.openAndGetValue((text2) => __async(this, null, function* () {
+ const items = yield getFeedItems({ name: "", folder: "", url: text2.getValue() });
+ if (!items || items.items.length === 0) {
+ input.setValidationError(text2, t("invalid_feed"));
+ return;
+ }
+ input.close();
+ new ArticleSuggestModal(this, items.items).open();
+ }));
+ })
+ });
+ this.registerView(VIEW_ID, (leaf) => new ViewLoader(leaf, this));
+ this.addSettingTab(new RSSReaderSettingsTab(this.app, this));
+ let interval;
+ if (this.settings.updateTime !== 0) {
+ interval = window.setInterval(() => __async(this, null, function* () {
+ yield this.updateFeeds();
+ }), this.settings.updateTime * 60 * 1e3);
+ this.registerInterval(interval);
+ }
+ if (this.settings.autoSync) {
+ this.registerInterval(window.setInterval(() => __async(this, null, function* () {
+ yield this.loadSettings();
+ }), 1e3 * 60));
+ }
+ settingsStore.subscribe((settings) => {
+ if (interval !== void 0)
+ clearInterval(interval);
+ if (settings.updateTime != 0) {
+ interval = window.setInterval(() => __async(this, null, function* () {
+ yield this.updateFeeds();
+ }), settings.updateTime * 60 * 1e3);
+ this.registerInterval(interval);
+ }
+ this.settings = settings;
+ this.saveSettings();
+ });
+ this.app.workspace.onLayoutReady(() => __async(this, null, function* () {
+ yield this.migrateData();
+ yield this.initLeaf();
+ yield this.updateFeeds();
+ feedsStore.subscribe((feeds) => {
+ const sorted = (0, import_lodash6.default)(feeds, "folder");
+ sortedFeedsStore.update(() => sorted);
+ let items = [];
+ for (const feed in Object.keys(feeds)) {
+ const feedItems = feeds[feed].items;
+ items = items.concat(feedItems);
+ }
+ const tags = [];
+ for (const item of items) {
+ if (item !== void 0)
+ tags.push(...item.tags);
+ }
+ const fileTags = this.app.metadataCache.getTags();
+ for (const tag of Object.keys(fileTags)) {
+ tags.push(tag.replace("#", ""));
+ }
+ tagsStore.update(() => new Set(tags.filter((tag) => tag.length > 0)));
+ const folders = [];
+ for (const item of items) {
+ if (item !== void 0)
+ folders.push(item.folder);
+ }
+ folderStore.update(() => new Set(folders.filter((folder) => folder !== void 0 && folder.length > 0)));
+ this.filterItems(items);
+ });
+ }));
+ });
+ }
+ filterItems(items) {
+ const filtered = new Array();
+ for (const filter of this.settings.filtered) {
+ const sortOrder = SortOrder[filter.sortOrder];
+ let filteredItems;
+ if (filter.read && filter.unread) {
+ filteredItems = items.filter((item) => {
+ return item.read === filter.read || item.read !== filter.unread;
+ });
+ } else if (filter.read) {
+ filteredItems = items.filter((item) => {
+ return item.read;
+ });
+ } else if (filter.unread) {
+ filteredItems = items.filter((item) => {
+ return !item.read;
+ });
+ }
+ if (filter.favorites) {
+ filteredItems = filteredItems.filter((item) => {
+ return item.favorite === filter.favorites;
+ });
+ }
+ if (filter.filterFolders.length > 0) {
+ filteredItems = filteredItems.filter((item) => {
+ return filter.filterFolders.includes(item.folder);
+ });
+ }
+ if (filter.ignoreFolders.length > 0) {
+ filteredItems = filteredItems.filter((item) => {
+ return !filter.ignoreFolders.includes(item.folder);
+ });
+ }
+ if (filter.filterFeeds.length > 0) {
+ filteredItems = filteredItems.filter((item) => {
+ return filter.filterFeeds.includes(item.feed);
+ });
+ }
+ if (filter.ignoreFeeds.length > 0) {
+ filteredItems = filteredItems.filter((item) => {
+ return !filter.ignoreFeeds.includes(item.feed);
+ });
+ }
+ if (filter.filterTags.length > 0) {
+ filteredItems = filteredItems.filter((item) => {
+ for (const tag of filter.filterTags) {
+ if (!item.tags.contains(tag))
+ return false;
+ }
+ return true;
+ });
+ }
+ if (filter.ignoreTags.length > 0) {
+ filteredItems = filteredItems.filter((item) => {
+ for (const tag of filter.ignoreTags) {
+ if (item.tags.contains(tag))
+ return false;
+ }
+ return true;
+ });
+ }
+ const sortedItems = this.sortItems(filteredItems, sortOrder);
+ filtered.push({ filter, items: { items: sortedItems } });
+ }
+ filteredItemsStore.update(() => filtered);
+ }
+ sortItems(items, sortOrder) {
+ if (!items)
+ return items;
+ if (sortOrder === SortOrder.ALPHABET_NORMAL) {
+ return items.sort((a, b) => a.title.localeCompare(b.title));
+ }
+ if (sortOrder === SortOrder.ALPHABET_INVERTED) {
+ return items.sort((a, b) => b.title.localeCompare(a.title));
+ }
+ if (sortOrder === SortOrder.DATE_NEWEST) {
+ return items.sort((a, b) => window.moment(b.pubDate) - window.moment(a.pubDate));
+ }
+ if (sortOrder === SortOrder.DATE_OLDEST) {
+ return items.sort((a, b) => window.moment(a.pubDate) - window.moment(b.pubDate));
+ }
+ return items;
+ }
+ updateFeeds() {
+ return __async(this, null, function* () {
+ console.log("updating feeds");
+ function mergeArrayById(array1, array2) {
+ const mergedObjectMap = (0, import_lodash8.default)(array1, "hash");
+ const finalArray = [];
+ for (const object of array2) {
+ mergedObjectMap[object.hash] = __spreadValues(__spreadValues({}, mergedObjectMap[object.hash]), object);
+ }
+ (0, import_lodash9.default)(mergedObjectMap).forEach((object) => {
+ finalArray.push(object);
+ });
+ return finalArray;
+ }
+ function customizer(objValue, srcValue) {
+ if (Array.isArray(objValue)) {
+ return mergeArrayById(objValue, srcValue);
+ }
+ }
+ let result = [];
+ for (const feed of this.settings.feeds) {
+ const items2 = yield getFeedItems(feed);
+ if (items2)
+ result.push(items2);
+ }
+ const items = this.settings.items;
+ for (const feed of items) {
+ if (feed.hash === void 0 || feed.hash === "") {
+ feed.hash = new import_ts_md53.Md5().appendStr(feed.name).appendStr(feed.folder ? feed.folder : "no-folder").end();
+ }
+ for (const item of feed.items) {
+ if (item.folder !== feed.folder || item.feed !== feed.name) {
+ feed.items.remove(item);
+ }
+ if (item.hash === void 0) {
+ item.hash = new import_ts_md53.Md5().appendStr(item.title).appendStr(item.folder).appendStr(item.link).end();
+ }
+ }
+ }
+ result = (0, import_lodash7.default)(result, items, customizer);
+ new import_obsidian28.Notice(t("refreshed_feeds"));
+ yield this.writeFeedContent(() => result);
+ });
+ }
+ onunload() {
+ console.log("unloading plugin rss reader");
+ this.app.workspace.getLeavesOfType(VIEW_ID).forEach((leaf) => leaf.detach());
+ }
+ initLeaf() {
+ return __async(this, null, function* () {
+ if (this.app.workspace.getLeavesOfType(VIEW_ID).length > 0) {
+ return;
+ }
+ yield this.app.workspace.getRightLeaf(false).setViewState({
+ type: VIEW_ID
+ });
+ });
+ }
+ migrateData() {
+ return __async(this, null, function* () {
+ const configPath = this.app.vault.configDir + "/plugins/rss-reader/data.json";
+ const config = JSON.parse(yield this.app.vault.adapter.read(configPath));
+ for (const feed of config.feeds) {
+ if (feed.folder === void 0) {
+ feed.folder = "";
+ }
+ }
+ for (const feed of config.items) {
+ if (feed.folder === void 0) {
+ feed.folder = "";
+ }
+ }
+ yield this.app.vault.adapter.write(configPath, JSON.stringify(config));
+ if (config.filtered.length === 0)
+ return;
+ if (config.filtered[0].ignoreFolders === void 0) {
+ new import_obsidian28.Notice("RSS Reader: migrating data");
+ console.log("RSS Reader: adding ignored fields to filters");
+ for (const filter of config.filtered) {
+ filter.ignoreTags = [];
+ filter.ignoreFolders = [];
+ filter.ignoreFeeds = [];
+ }
+ yield this.app.vault.adapter.write(configPath, JSON.stringify(config));
+ yield this.loadSettings();
+ new import_obsidian28.Notice("RSS Reader: data has been migrated");
+ }
+ if (config.filtered[0].filterType === void 0)
+ return;
+ new import_obsidian28.Notice("RSS Reader: migrating data");
+ for (const filter of config.filtered) {
+ const newFilter = {
+ filterFolders: [],
+ filterTags: [],
+ filterFeeds: [],
+ favorites: false,
+ read: false,
+ unread: false,
+ sortOrder: filter.sortOrder,
+ name: filter.name,
+ ignoreFolders: [],
+ ignoreFeeds: [],
+ ignoreTags: []
+ };
+ if (filter.filterType === "FAVORITES")
+ newFilter.favorites = true;
+ if (filter.filterType === "READ")
+ newFilter.read = true;
+ if (filter.filterType === "UNREAD")
+ newFilter.unread = true;
+ if (filter.filterType === "TAGS") {
+ if (filter.filterContent !== "") {
+ newFilter.filterTags = filter.filterContent.split(",");
+ }
+ } else {
+ if (filter.filterContent !== "") {
+ newFilter.filterFolders = filter.filterContent.split(",");
+ }
+ }
+ newFilter.read = true;
+ newFilter.unread = true;
+ config.filtered = config.filtered.filter((item) => item.name !== filter.name);
+ config.filtered.push(newFilter);
+ }
+ yield this.app.vault.adapter.write(configPath, JSON.stringify(config));
+ yield this.loadSettings();
+ new import_obsidian28.Notice("RSS Reader: data has been migrated");
+ if (config.read === void 0)
+ return;
+ new import_obsidian28.Notice("RSS Reader: migrating data");
+ for (const content of Object.values(config.items)) {
+ for (const item of content.items) {
+ if (config.read.items.some((readItem) => {
+ return item.title == readItem.title && item.link == readItem.link && item.content == readItem.content;
+ })) {
+ item.read = true;
+ }
+ }
+ for (const item of content.items) {
+ if (config.favorites.items.some((favItem) => {
+ return item.title == favItem.title && item.link == favItem.link && item.content == favItem.content;
+ })) {
+ item.favorite = true;
+ }
+ }
+ }
+ delete config.read;
+ delete config.favorites;
+ yield this.app.vault.adapter.write(configPath, JSON.stringify(config));
+ yield this.loadSettings();
+ new import_obsidian28.Notice("RSS Reader: data has been migrated");
+ });
+ }
+ loadSettings() {
+ return __async(this, null, function* () {
+ const configPath = this.app.vault.configDir + "/plugins/rss-reader/data.json";
+ let file;
+ try {
+ file = yield this.app.vault.adapter.read(configPath);
+ } catch (e) {
+ console.error(e);
+ }
+ if (file !== void 0) {
+ try {
+ JSON.parse(file);
+ } catch (e) {
+ console.log(t("RSS_Reader") + " could not parse json, check if the plugins data.json is valid.");
+ console.error(e);
+ new import_obsidian28.Notice(t("RSS_Reader") + " could not parse plugin data. If this message keeps showing up, check the console");
+ return Promise.resolve();
+ }
+ }
+ const data = yield this.loadData();
+ this.settings = Object.assign({}, DEFAULT_SETTINGS, data);
+ if (data !== void 0 && data !== null) {
+ this.settings.hotkeys = Object.assign({}, DEFAULT_SETTINGS.hotkeys, data.hotkeys);
+ }
+ settingsStore.set(this.settings);
+ configuredFeedsStore.set(this.settings.feeds);
+ feedsStore.set(this.settings.items);
+ foldedState.set(this.settings.folded);
+ });
+ }
+ saveSettings() {
+ return __async(this, null, function* () {
+ yield this.saveData(this.settings);
+ });
+ }
+ writeFeeds(changeOpts) {
+ return __async(this, null, function* () {
+ yield configuredFeedsStore.update((old) => __spreadValues(__spreadValues({}, old), changeOpts(old)));
+ yield this.writeSettings((old) => ({
+ feeds: changeOpts(old.feeds)
+ }));
+ yield this.updateFeeds();
+ });
+ }
+ writeFeedContent(changeOpts) {
+ return __async(this, null, function* () {
+ yield feedsStore.update((old) => __spreadValues({}, changeOpts(old)));
+ yield this.writeSettings((old) => ({
+ items: changeOpts(old.items)
+ }));
+ });
+ }
+ writeFiltered(changeOpts) {
+ return __async(this, null, function* () {
+ yield filteredStore.update((old) => __spreadValues(__spreadValues({}, old), changeOpts(old)));
+ yield this.writeSettings((old) => ({
+ filtered: changeOpts(old.filtered)
+ }));
+ yield this.updateFeeds();
+ });
+ }
+ writeFolded(folded) {
+ return __async(this, null, function* () {
+ yield foldedState.update(() => folded);
+ yield this.writeSettings(() => ({
+ folded
+ }));
+ });
+ }
+ writeSettings(changeOpts) {
+ return __async(this, null, function* () {
+ yield settingsStore.update((old) => __spreadValues(__spreadValues({}, old), changeOpts(old)));
+ });
+ }
+};
+/*!
+ Copyright (c) 2016 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+
+/* nosourcemap */
\ No newline at end of file
diff --git a/.obsidian/plugins/rss-reader/manifest.json b/.obsidian/plugins/rss-reader/manifest.json
new file mode 100644
index 00000000..e7df12af
--- /dev/null
+++ b/.obsidian/plugins/rss-reader/manifest.json
@@ -0,0 +1,10 @@
+{
+ "id": "rss-reader",
+ "name": "RSS Reader",
+ "version": "1.2.2",
+ "minAppVersion": "0.13.33",
+ "description": "Read RSS Feeds from within obsidian",
+ "author": "Johannes Theiner",
+ "authorUrl": "https://github.com/joethei",
+ "isDesktopOnly": false
+}
diff --git a/.obsidian/plugins/rss-reader/styles.css b/.obsidian/plugins/rss-reader/styles.css
new file mode 100644
index 00000000..1cfd2a4d
--- /dev/null
+++ b/.obsidian/plugins/rss-reader/styles.css
@@ -0,0 +1,142 @@
+.rss-read a {
+ color: darkslategrey;
+}
+
+.has-invalid-message {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-template-rows: 1fr 1fr;
+ grid-template-areas:
+ "text image"
+ "inv inv";
+}
+
+.rss-setting-input input {
+ grid-column: span 2;
+}
+
+input.is-invalid {
+ border-color: #dc3545 !important;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+
+.unset-align-items {
+ align-items: unset;
+}
+
+.invalid-feedback {
+ display: block;
+ grid-area: inv;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: #dc3545;
+}
+
+.rss-scrollable-content {
+ overflow: auto;
+ height: 60vh;
+}
+
+
+.rss-tooltip {
+ position: relative;
+}
+
+.rss-tooltip .tooltiptext {
+ visibility: hidden;
+ background-color: var(--interactive-hover);
+ color: var(--text-normal);
+ text-align: center;
+ padding: 5px 0;
+ border-radius: 6px;
+
+ position: absolute;
+ z-index: var(--layer-tooltip);
+}
+
+.rss-tooltip:hover .tooltiptext {
+ visibility: visible;
+}
+
+.rss-content img {
+ max-width: 100%;
+}
+
+.rss-subtitle {
+ display: inline;
+}
+
+/*action buttons on mobile should not take one line each*/
+.is-mobile button.rss-button {
+ width: auto;
+}
+
+.rss-selectable {
+ user-select: text;
+}
+
+.rss-card {
+ padding-top: 10px;
+ width: 100%;
+ height: 100%;
+
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
+ transition: 0.3s;
+ border-radius: 5px;
+ background: var(--background-primary);
+}
+
+.rss-card-items {
+ display: flex;
+ padding-top: 10px;
+}
+
+.rss-card-items .rss-item-text {
+ padding-left: 5px;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ max-height: 10em;
+}
+
+.rss-item-title {
+ padding-left: 5px;
+}
+
+.rss-feed-item {
+ width: 100%;
+}
+
+.rss-view {
+ background: var(--background-secondary);
+}
+
+/*making sure both highlight styles look consistent*/
+.rss-modal li mark {
+ background-color: var(--text-highlight-bg);
+}
+
+
+.rss-modal mark li {
+ background-color: var(--text-highlight-bg);
+}
+
+.rss-modal mark {
+ background-color: var(--text-highlight-bg);
+}
+
+.rss-content .frontmatter {
+ display: none;
+}
+
+.rss-content .frontmatter-container {
+ display: none;
+}
+
+.rss-item-count {
+ margin-left: auto;
+ margin-right: 0;
+}