11064 lines
722 KiB
JavaScript
11064 lines
722 KiB
JavaScript
/*
|
||
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
|
||
if you want to view the source visit the plugins github repository
|
||
*/
|
||
|
||
'use strict';
|
||
|
||
var obsidian = require('obsidian');
|
||
|
||
/******************************************************************************
|
||
Copyright (c) Microsoft Corporation.
|
||
|
||
Permission to use, copy, modify, and/or distribute this software for any
|
||
purpose with or without fee is hereby granted.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
PERFORMANCE OF THIS SOFTWARE.
|
||
***************************************************************************** */
|
||
|
||
function __awaiter(thisArg, _arguments, P, generator) {
|
||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||
return new (P || (P = Promise))(function (resolve, reject) {
|
||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
});
|
||
}
|
||
|
||
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||
|
||
function createCommonjsModule(fn) {
|
||
var module = { exports: {} };
|
||
return fn(module, module.exports), module.exports;
|
||
}
|
||
|
||
createCommonjsModule(function (module, exports) {
|
||
(function webpackUniversalModuleDefinition(root, factory) {
|
||
module.exports = factory();
|
||
})(typeof self !== 'undefined' ? self : commonjsGlobal, function() {
|
||
return /******/ (function(modules) { // webpackBootstrap
|
||
/******/ // The module cache
|
||
/******/ var installedModules = {};
|
||
/******/
|
||
/******/ // The require function
|
||
/******/ function __webpack_require__(moduleId) {
|
||
/******/
|
||
/******/ // Check if module is in cache
|
||
/******/ if(installedModules[moduleId]) {
|
||
/******/ return installedModules[moduleId].exports;
|
||
/******/ }
|
||
/******/ // Create a new module (and put it into the cache)
|
||
/******/ var module = installedModules[moduleId] = {
|
||
/******/ i: moduleId,
|
||
/******/ l: false,
|
||
/******/ exports: {}
|
||
/******/ };
|
||
/******/
|
||
/******/ // Execute the module function
|
||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||
/******/
|
||
/******/ // Flag the module as loaded
|
||
/******/ module.l = true;
|
||
/******/
|
||
/******/ // Return the exports of the module
|
||
/******/ return module.exports;
|
||
/******/ }
|
||
/******/
|
||
/******/
|
||
/******/ // expose the modules object (__webpack_modules__)
|
||
/******/ __webpack_require__.m = modules;
|
||
/******/
|
||
/******/ // expose the module cache
|
||
/******/ __webpack_require__.c = installedModules;
|
||
/******/
|
||
/******/ // define getter function for harmony exports
|
||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||
/******/ Object.defineProperty(exports, name, {
|
||
/******/ configurable: false,
|
||
/******/ enumerable: true,
|
||
/******/ get: getter
|
||
/******/ });
|
||
/******/ }
|
||
/******/ };
|
||
/******/
|
||
/******/ // define __esModule on exports
|
||
/******/ __webpack_require__.r = function(exports) {
|
||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||
/******/ };
|
||
/******/
|
||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||
/******/ __webpack_require__.n = function(module) {
|
||
/******/ var getter = module && module.__esModule ?
|
||
/******/ function getDefault() { return module['default']; } :
|
||
/******/ function getModuleExports() { return module; };
|
||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||
/******/ return getter;
|
||
/******/ };
|
||
/******/
|
||
/******/ // Object.prototype.hasOwnProperty.call
|
||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||
/******/
|
||
/******/ // __webpack_public_path__
|
||
/******/ __webpack_require__.p = "";
|
||
/******/
|
||
/******/
|
||
/******/ // Load entry module and return exports
|
||
/******/ return __webpack_require__(__webpack_require__.s = 0);
|
||
/******/ })
|
||
/************************************************************************/
|
||
/******/ ({
|
||
|
||
/***/ "./dist/icons.json":
|
||
/*!*************************!*\
|
||
!*** ./dist/icons.json ***!
|
||
\*************************/
|
||
/*! exports provided: 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, default */
|
||
/***/ (function(module) {
|
||
|
||
module.exports = {"activity":"<polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"></polyline>","airplay":"<path d=\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\"></path><polygon points=\"12 15 17 21 7 21 12 15\"></polygon>","alert-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>","alert-octagon":"<polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>","alert-triangle":"<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>","align-center":"<line x1=\"18\" y1=\"10\" x2=\"6\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"18\" y1=\"18\" x2=\"6\" y2=\"18\"></line>","align-justify":"<line x1=\"21\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"21\" y1=\"18\" x2=\"3\" y2=\"18\"></line>","align-left":"<line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\"></line>","align-right":"<line x1=\"21\" y1=\"10\" x2=\"7\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"21\" y1=\"18\" x2=\"7\" y2=\"18\"></line>","anchor":"<circle cx=\"12\" cy=\"5\" r=\"3\"></circle><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"8\"></line><path d=\"M5 12H2a10 10 0 0 0 20 0h-3\"></path>","aperture":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"14.31\" y1=\"8\" x2=\"20.05\" y2=\"17.94\"></line><line x1=\"9.69\" y1=\"8\" x2=\"21.17\" y2=\"8\"></line><line x1=\"7.38\" y1=\"12\" x2=\"13.12\" y2=\"2.06\"></line><line x1=\"9.69\" y1=\"16\" x2=\"3.95\" y2=\"6.06\"></line><line x1=\"14.31\" y1=\"16\" x2=\"2.83\" y2=\"16\"></line><line x1=\"16.62\" y1=\"12\" x2=\"10.88\" y2=\"21.94\"></line>","archive":"<polyline points=\"21 8 21 21 3 21 3 8\"></polyline><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"></rect><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"></line>","arrow-down-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"8 12 12 16 16 12\"></polyline><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line>","arrow-down-left":"<line x1=\"17\" y1=\"7\" x2=\"7\" y2=\"17\"></line><polyline points=\"17 17 7 17 7 7\"></polyline>","arrow-down-right":"<line x1=\"7\" y1=\"7\" x2=\"17\" y2=\"17\"></line><polyline points=\"17 7 17 17 7 17\"></polyline>","arrow-down":"<line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><polyline points=\"19 12 12 19 5 12\"></polyline>","arrow-left-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 8 8 12 12 16\"></polyline><line x1=\"16\" y1=\"12\" x2=\"8\" y2=\"12\"></line>","arrow-left":"<line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line><polyline points=\"12 19 5 12 12 5\"></polyline>","arrow-right-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 16 16 12 12 8\"></polyline><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","arrow-right":"<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><polyline points=\"12 5 19 12 12 19\"></polyline>","arrow-up-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"16 12 12 8 8 12\"></polyline><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"8\"></line>","arrow-up-left":"<line x1=\"17\" y1=\"17\" x2=\"7\" y2=\"7\"></line><polyline points=\"7 17 7 7 17 7\"></polyline>","arrow-up-right":"<line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"></line><polyline points=\"7 7 17 7 17 17\"></polyline>","arrow-up":"<line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line><polyline points=\"5 12 12 5 19 12\"></polyline>","at-sign":"<circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"></path>","award":"<circle cx=\"12\" cy=\"8\" r=\"7\"></circle><polyline points=\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\"></polyline>","bar-chart-2":"<line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"></line><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"></line>","bar-chart":"<line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"10\"></line><line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"16\"></line>","battery-charging":"<path d=\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\"></path><line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"11\"></line><polyline points=\"11 6 7 12 13 12 9 18\"></polyline>","battery":"<rect x=\"1\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" ry=\"2\"></rect><line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"11\"></line>","bell-off":"<path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path><path d=\"M18.63 13A17.89 17.89 0 0 1 18 8\"></path><path d=\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\"></path><path d=\"M18 8a6 6 0 0 0-9.33-5\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","bell":"<path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>","bluetooth":"<polyline points=\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\"></polyline>","bold":"<path d=\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"></path><path d=\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\"></path>","book-open":"<path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path>","book":"<path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"></path><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"></path>","bookmark":"<path d=\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\"></path>","box":"<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"></polyline><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"></line>","briefcase":"<rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"></path>","calendar":"<rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>","camera-off":"<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line><path d=\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\"></path>","camera":"<path d=\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\"></path><circle cx=\"12\" cy=\"13\" r=\"4\"></circle>","cast":"<path d=\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\"></path><line x1=\"2\" y1=\"20\" x2=\"2.01\" y2=\"20\"></line>","check-circle":"<path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline>","check-square":"<polyline points=\"9 11 12 14 22 4\"></polyline><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"></path>","check":"<polyline points=\"20 6 9 17 4 12\"></polyline>","chevron-down":"<polyline points=\"6 9 12 15 18 9\"></polyline>","chevron-left":"<polyline points=\"15 18 9 12 15 6\"></polyline>","chevron-right":"<polyline points=\"9 18 15 12 9 6\"></polyline>","chevron-up":"<polyline points=\"18 15 12 9 6 15\"></polyline>","chevrons-down":"<polyline points=\"7 13 12 18 17 13\"></polyline><polyline points=\"7 6 12 11 17 6\"></polyline>","chevrons-left":"<polyline points=\"11 17 6 12 11 7\"></polyline><polyline points=\"18 17 13 12 18 7\"></polyline>","chevrons-right":"<polyline points=\"13 17 18 12 13 7\"></polyline><polyline points=\"6 17 11 12 6 7\"></polyline>","chevrons-up":"<polyline points=\"17 11 12 6 7 11\"></polyline><polyline points=\"17 18 12 13 7 18\"></polyline>","chrome":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"4\"></circle><line x1=\"21.17\" y1=\"8\" x2=\"12\" y2=\"8\"></line><line x1=\"3.95\" y1=\"6.06\" x2=\"8.54\" y2=\"14\"></line><line x1=\"10.88\" y1=\"21.94\" x2=\"15.46\" y2=\"14\"></line>","circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>","clipboard":"<path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"></path><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\"></rect>","clock":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline>","cloud-drizzle":"<line x1=\"8\" y1=\"19\" x2=\"8\" y2=\"21\"></line><line x1=\"8\" y1=\"13\" x2=\"8\" y2=\"15\"></line><line x1=\"16\" y1=\"19\" x2=\"16\" y2=\"21\"></line><line x1=\"16\" y1=\"13\" x2=\"16\" y2=\"15\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"17\"></line><path d=\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"></path>","cloud-lightning":"<path d=\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\"></path><polyline points=\"13 11 9 17 15 17 11 23\"></polyline>","cloud-off":"<path d=\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","cloud-rain":"<line x1=\"16\" y1=\"13\" x2=\"16\" y2=\"21\"></line><line x1=\"8\" y1=\"13\" x2=\"8\" y2=\"21\"></line><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"23\"></line><path d=\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\"></path>","cloud-snow":"<path d=\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\"></path><line x1=\"8\" y1=\"16\" x2=\"8.01\" y2=\"16\"></line><line x1=\"8\" y1=\"20\" x2=\"8.01\" y2=\"20\"></line><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"></line><line x1=\"12\" y1=\"22\" x2=\"12.01\" y2=\"22\"></line><line x1=\"16\" y1=\"16\" x2=\"16.01\" y2=\"16\"></line><line x1=\"16\" y1=\"20\" x2=\"16.01\" y2=\"20\"></line>","cloud":"<path d=\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\"></path>","code":"<polyline points=\"16 18 22 12 16 6\"></polyline><polyline points=\"8 6 2 12 8 18\"></polyline>","codepen":"<polygon points=\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\"></polygon><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"15.5\"></line><polyline points=\"22 8.5 12 15.5 2 8.5\"></polyline><polyline points=\"2 15.5 12 8.5 22 15.5\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"8.5\"></line>","codesandbox":"<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path><polyline points=\"7.5 4.21 12 6.81 16.5 4.21\"></polyline><polyline points=\"7.5 19.79 7.5 14.6 3 12\"></polyline><polyline points=\"21 12 16.5 14.6 16.5 19.79\"></polyline><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"></polyline><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"></line>","coffee":"<path d=\"M18 8h1a4 4 0 0 1 0 8h-1\"></path><path d=\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"></path><line x1=\"6\" y1=\"1\" x2=\"6\" y2=\"4\"></line><line x1=\"10\" y1=\"1\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"1\" x2=\"14\" y2=\"4\"></line>","columns":"<path d=\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\"></path>","command":"<path d=\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\"></path>","compass":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"></polygon>","copy":"<rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>","corner-down-left":"<polyline points=\"9 10 4 15 9 20\"></polyline><path d=\"M20 4v7a4 4 0 0 1-4 4H4\"></path>","corner-down-right":"<polyline points=\"15 10 20 15 15 20\"></polyline><path d=\"M4 4v7a4 4 0 0 0 4 4h12\"></path>","corner-left-down":"<polyline points=\"14 15 9 20 4 15\"></polyline><path d=\"M20 4h-7a4 4 0 0 0-4 4v12\"></path>","corner-left-up":"<polyline points=\"14 9 9 4 4 9\"></polyline><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"></path>","corner-right-down":"<polyline points=\"10 15 15 20 20 15\"></polyline><path d=\"M4 4h7a4 4 0 0 1 4 4v12\"></path>","corner-right-up":"<polyline points=\"10 9 15 4 20 9\"></polyline><path d=\"M4 20h7a4 4 0 0 0 4-4V4\"></path>","corner-up-left":"<polyline points=\"9 14 4 9 9 4\"></polyline><path d=\"M20 20v-7a4 4 0 0 0-4-4H4\"></path>","corner-up-right":"<polyline points=\"15 14 20 9 15 4\"></polyline><path d=\"M4 20v-7a4 4 0 0 1 4-4h12\"></path>","cpu":"<rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" ry=\"2\"></rect><rect x=\"9\" y=\"9\" width=\"6\" height=\"6\"></rect><line x1=\"9\" y1=\"1\" x2=\"9\" y2=\"4\"></line><line x1=\"15\" y1=\"1\" x2=\"15\" y2=\"4\"></line><line x1=\"9\" y1=\"20\" x2=\"9\" y2=\"23\"></line><line x1=\"15\" y1=\"20\" x2=\"15\" y2=\"23\"></line><line x1=\"20\" y1=\"9\" x2=\"23\" y2=\"9\"></line><line x1=\"20\" y1=\"14\" x2=\"23\" y2=\"14\"></line><line x1=\"1\" y1=\"9\" x2=\"4\" y2=\"9\"></line><line x1=\"1\" y1=\"14\" x2=\"4\" y2=\"14\"></line>","credit-card":"<rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\"></rect><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"></line>","crop":"<path d=\"M6.13 1L6 16a2 2 0 0 0 2 2h15\"></path><path d=\"M1 6.13L16 6a2 2 0 0 1 2 2v15\"></path>","crosshair":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"22\" y1=\"12\" x2=\"18\" y2=\"12\"></line><line x1=\"6\" y1=\"12\" x2=\"2\" y2=\"12\"></line><line x1=\"12\" y1=\"6\" x2=\"12\" y2=\"2\"></line><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"18\"></line>","database":"<ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"></ellipse><path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\"></path><path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\"></path>","delete":"<path d=\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\"></path><line x1=\"18\" y1=\"9\" x2=\"12\" y2=\"15\"></line><line x1=\"12\" y1=\"9\" x2=\"18\" y2=\"15\"></line>","disc":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>","divide-circle":"<line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"16\"></line><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"8\"></line><circle cx=\"12\" cy=\"12\" r=\"10\"></circle>","divide-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"16\"></line><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"8\"></line>","divide":"<circle cx=\"12\" cy=\"6\" r=\"2\"></circle><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><circle cx=\"12\" cy=\"18\" r=\"2\"></circle>","dollar-sign":"<line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"></line><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"></path>","download-cloud":"<polyline points=\"8 17 12 21 16 17\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>","download":"<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>","dribbble":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32\"></path>","droplet":"<path d=\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\"></path>","edit-2":"<path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"></path>","edit-3":"<path d=\"M12 20h9\"></path><path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"></path>","edit":"<path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>","external-link":"<path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line>","eye-off":"<path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","eye":"<path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>","facebook":"<path d=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"></path>","fast-forward":"<polygon points=\"13 19 22 12 13 5 13 19\"></polygon><polygon points=\"2 19 11 12 2 5 2 19\"></polygon>","feather":"<path d=\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\"></path><line x1=\"16\" y1=\"8\" x2=\"2\" y2=\"22\"></line><line x1=\"17.5\" y1=\"15\" x2=\"9\" y2=\"15\"></line>","figma":"<path d=\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\"></path><path d=\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\"></path><path d=\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\"></path><path d=\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\"></path><path d=\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\"></path>","file-minus":"<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>","file-plus":"<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"></line><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>","file-text":"<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline>","file":"<path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>","film":"<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"2.18\" ry=\"2.18\"></rect><line x1=\"7\" y1=\"2\" x2=\"7\" y2=\"22\"></line><line x1=\"17\" y1=\"2\" x2=\"17\" y2=\"22\"></line><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line><line x1=\"2\" y1=\"7\" x2=\"7\" y2=\"7\"></line><line x1=\"2\" y1=\"17\" x2=\"7\" y2=\"17\"></line><line x1=\"17\" y1=\"17\" x2=\"22\" y2=\"17\"></line><line x1=\"17\" y1=\"7\" x2=\"22\" y2=\"7\"></line>","filter":"<polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>","flag":"<path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"></path><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"></line>","folder-minus":"<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path><line x1=\"9\" y1=\"14\" x2=\"15\" y2=\"14\"></line>","folder-plus":"<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path><line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"17\"></line><line x1=\"9\" y1=\"14\" x2=\"15\" y2=\"14\"></line>","folder":"<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path>","framer":"<path d=\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\"></path>","frown":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M16 16s-1.5-2-4-2-4 2-4 2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>","gift":"<polyline points=\"20 12 20 22 4 22 4 12\"></polyline><rect x=\"2\" y=\"7\" width=\"20\" height=\"5\"></rect><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\"></line><path d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\"></path><path d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\"></path>","git-branch":"<line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\"></line><circle cx=\"18\" cy=\"6\" r=\"3\"></circle><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><path d=\"M18 9a9 9 0 0 1-9 9\"></path>","git-commit":"<circle cx=\"12\" cy=\"12\" r=\"4\"></circle><line x1=\"1.05\" y1=\"12\" x2=\"7\" y2=\"12\"></line><line x1=\"17.01\" y1=\"12\" x2=\"22.96\" y2=\"12\"></line>","git-merge":"<circle cx=\"18\" cy=\"18\" r=\"3\"></circle><circle cx=\"6\" cy=\"6\" r=\"3\"></circle><path d=\"M6 21V9a9 9 0 0 0 9 9\"></path>","git-pull-request":"<circle cx=\"18\" cy=\"18\" r=\"3\"></circle><circle cx=\"6\" cy=\"6\" r=\"3\"></circle><path d=\"M13 6h3a2 2 0 0 1 2 2v7\"></path><line x1=\"6\" y1=\"9\" x2=\"6\" y2=\"21\"></line>","github":"<path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"></path>","gitlab":"<path d=\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\"></path>","globe":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"></path>","grid":"<rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect>","hard-drive":"<line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\"></line><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path><line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\"></line><line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\"></line>","hash":"<line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"></line><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"></line><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"></line><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"></line>","headphones":"<path d=\"M3 18v-6a9 9 0 0 1 18 0v6\"></path><path d=\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\"></path>","heart":"<path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path>","help-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"></path><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>","hexagon":"<path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path>","home":"<path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline>","image":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle><polyline points=\"21 15 16 10 5 21\"></polyline>","inbox":"<polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"></polyline><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path>","info":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>","instagram":"<rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"5\" ry=\"5\"></rect><path d=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"></path><line x1=\"17.5\" y1=\"6.5\" x2=\"17.51\" y2=\"6.5\"></line>","italic":"<line x1=\"19\" y1=\"4\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"20\" x2=\"5\" y2=\"20\"></line><line x1=\"15\" y1=\"4\" x2=\"9\" y2=\"20\"></line>","key":"<path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"></path>","layers":"<polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline>","layout":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\"></line><line x1=\"9\" y1=\"21\" x2=\"9\" y2=\"9\"></line>","life-buoy":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"4\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"9.17\" y2=\"9.17\"></line><line x1=\"14.83\" y1=\"14.83\" x2=\"19.07\" y2=\"19.07\"></line><line x1=\"14.83\" y1=\"9.17\" x2=\"19.07\" y2=\"4.93\"></line><line x1=\"14.83\" y1=\"9.17\" x2=\"18.36\" y2=\"5.64\"></line><line x1=\"4.93\" y1=\"19.07\" x2=\"9.17\" y2=\"14.83\"></line>","link-2":"<path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","link":"<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"></path><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"></path>","linkedin":"<path d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"></path><rect x=\"2\" y=\"9\" width=\"4\" height=\"12\"></rect><circle cx=\"4\" cy=\"4\" r=\"2\"></circle>","list":"<line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>","loader":"<line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\"></line><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\"></line><line x1=\"4.93\" y1=\"4.93\" x2=\"7.76\" y2=\"7.76\"></line><line x1=\"16.24\" y1=\"16.24\" x2=\"19.07\" y2=\"19.07\"></line><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\"></line><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\"></line><line x1=\"4.93\" y1=\"19.07\" x2=\"7.76\" y2=\"16.24\"></line><line x1=\"16.24\" y1=\"7.76\" x2=\"19.07\" y2=\"4.93\"></line>","lock":"<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>","log-in":"<path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"></path><polyline points=\"10 17 15 12 10 7\"></polyline><line x1=\"15\" y1=\"12\" x2=\"3\" y2=\"12\"></line>","log-out":"<path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"></path><polyline points=\"16 17 21 12 16 7\"></polyline><line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\"></line>","mail":"<path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"></path><polyline points=\"22,6 12,13 2,6\"></polyline>","map-pin":"<path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle>","map":"<polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\"></polygon><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\"></line><line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\"></line>","maximize-2":"<polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>","maximize":"<path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path>","meh":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"15\" x2=\"16\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>","menu":"<line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>","message-circle":"<path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>","message-square":"<path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"></path>","mic-off":"<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line><path d=\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\"></path><path d=\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>","mic":"<path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>","minimize-2":"<polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>","minimize":"<path d=\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\"></path>","minus-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","minus-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","minus":"<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>","monitor":"<rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"></line><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"></line>","moon":"<path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"></path>","more-horizontal":"<circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"19\" cy=\"12\" r=\"1\"></circle><circle cx=\"5\" cy=\"12\" r=\"1\"></circle>","more-vertical":"<circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"12\" cy=\"5\" r=\"1\"></circle><circle cx=\"12\" cy=\"19\" r=\"1\"></circle>","mouse-pointer":"<path d=\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\"></path><path d=\"M13 13l6 6\"></path>","move":"<polyline points=\"5 9 2 12 5 15\"></polyline><polyline points=\"9 5 12 2 15 5\"></polyline><polyline points=\"15 19 12 22 9 19\"></polyline><polyline points=\"19 9 22 12 19 15\"></polyline><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"></line><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"22\"></line>","music":"<path d=\"M9 18V5l12-2v13\"></path><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><circle cx=\"18\" cy=\"16\" r=\"3\"></circle>","navigation-2":"<polygon points=\"12 2 19 21 12 17 5 21 12 2\"></polygon>","navigation":"<polygon points=\"3 11 22 2 13 21 11 13 3 11\"></polygon>","octagon":"<polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon>","package":"<line x1=\"16.5\" y1=\"9.4\" x2=\"7.5\" y2=\"4.21\"></line><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"></path><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"></polyline><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"></line>","paperclip":"<path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"></path>","pause-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"10\" y1=\"15\" x2=\"10\" y2=\"9\"></line><line x1=\"14\" y1=\"15\" x2=\"14\" y2=\"9\"></line>","pause":"<rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect>","pen-tool":"<path d=\"M12 19l7-7 3 3-7 7-3-3z\"></path><path d=\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"></path><path d=\"M2 2l7.586 7.586\"></path><circle cx=\"11\" cy=\"11\" r=\"2\"></circle>","percent":"<line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line><circle cx=\"6.5\" cy=\"6.5\" r=\"2.5\"></circle><circle cx=\"17.5\" cy=\"17.5\" r=\"2.5\"></circle>","phone-call":"<path d=\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-forwarded":"<polyline points=\"19 1 23 5 19 9\"></polyline><line x1=\"15\" y1=\"5\" x2=\"23\" y2=\"5\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-incoming":"<polyline points=\"16 2 16 8 22 8\"></polyline><line x1=\"23\" y1=\"1\" x2=\"16\" y2=\"8\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-missed":"<line x1=\"23\" y1=\"1\" x2=\"17\" y2=\"7\"></line><line x1=\"17\" y1=\"1\" x2=\"23\" y2=\"7\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone-off":"<path d=\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\"></path><line x1=\"23\" y1=\"1\" x2=\"1\" y2=\"23\"></line>","phone-outgoing":"<polyline points=\"23 7 23 1 17 1\"></polyline><line x1=\"16\" y1=\"8\" x2=\"23\" y2=\"1\"></line><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","phone":"<path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>","pie-chart":"<path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"></path><path d=\"M22 12A10 10 0 0 0 12 2v10z\"></path>","play-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"10 8 16 12 10 16 10 8\"></polygon>","play":"<polygon points=\"5 3 19 12 5 21 5 3\"></polygon>","plus-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","plus-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>","plus":"<line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>","pocket":"<path d=\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\"></path><polyline points=\"8 10 12 14 16 10\"></polyline>","power":"<path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"></line>","printer":"<polyline points=\"6 9 6 2 18 2 18 9\"></polyline><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"></path><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"></rect>","radio":"<circle cx=\"12\" cy=\"12\" r=\"2\"></circle><path d=\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\"></path>","refresh-ccw":"<polyline points=\"1 4 1 10 7 10\"></polyline><polyline points=\"23 20 23 14 17 14\"></polyline><path d=\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\"></path>","refresh-cw":"<polyline points=\"23 4 23 10 17 10\"></polyline><polyline points=\"1 20 1 14 7 14\"></polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"></path>","repeat":"<polyline points=\"17 1 21 5 17 9\"></polyline><path d=\"M3 11V9a4 4 0 0 1 4-4h14\"></path><polyline points=\"7 23 3 19 7 15\"></polyline><path d=\"M21 13v2a4 4 0 0 1-4 4H3\"></path>","rewind":"<polygon points=\"11 19 2 12 11 5 11 19\"></polygon><polygon points=\"22 19 13 12 22 5 22 19\"></polygon>","rotate-ccw":"<polyline points=\"1 4 1 10 7 10\"></polyline><path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"></path>","rotate-cw":"<polyline points=\"23 4 23 10 17 10\"></polyline><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"></path>","rss":"<path d=\"M4 11a9 9 0 0 1 9 9\"></path><path d=\"M4 4a16 16 0 0 1 16 16\"></path><circle cx=\"5\" cy=\"19\" r=\"1\"></circle>","save":"<path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"></path><polyline points=\"17 21 17 13 7 13 7 21\"></polyline><polyline points=\"7 3 7 8 15 8\"></polyline>","scissors":"<circle cx=\"6\" cy=\"6\" r=\"3\"></circle><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><line x1=\"20\" y1=\"4\" x2=\"8.12\" y2=\"15.88\"></line><line x1=\"14.47\" y1=\"14.48\" x2=\"20\" y2=\"20\"></line><line x1=\"8.12\" y1=\"8.12\" x2=\"12\" y2=\"12\"></line>","search":"<circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>","send":"<line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>","server":"<rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line>","settings":"<circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"></path>","share-2":"<circle cx=\"18\" cy=\"5\" r=\"3\"></circle><circle cx=\"6\" cy=\"12\" r=\"3\"></circle><circle cx=\"18\" cy=\"19\" r=\"3\"></circle><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"></line><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"></line>","share":"<path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path><polyline points=\"16 6 12 2 8 6\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"15\"></line>","shield-off":"<path d=\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\"></path><path d=\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","shield":"<path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>","shopping-bag":"<path d=\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"></path><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><path d=\"M16 10a4 4 0 0 1-8 0\"></path>","shopping-cart":"<circle cx=\"9\" cy=\"21\" r=\"1\"></circle><circle cx=\"20\" cy=\"21\" r=\"1\"></circle><path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"></path>","shuffle":"<polyline points=\"16 3 21 3 21 8\"></polyline><line x1=\"4\" y1=\"20\" x2=\"21\" y2=\"3\"></line><polyline points=\"21 16 21 21 16 21\"></polyline><line x1=\"15\" y1=\"15\" x2=\"21\" y2=\"21\"></line><line x1=\"4\" y1=\"4\" x2=\"9\" y2=\"9\"></line>","sidebar":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>","skip-back":"<polygon points=\"19 20 9 12 19 4 19 20\"></polygon><line x1=\"5\" y1=\"19\" x2=\"5\" y2=\"5\"></line>","skip-forward":"<polygon points=\"5 4 15 12 5 20 5 4\"></polygon><line x1=\"19\" y1=\"5\" x2=\"19\" y2=\"19\"></line>","slack":"<path d=\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\"></path><path d=\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"></path><path d=\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\"></path><path d=\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\"></path><path d=\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\"></path><path d=\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\"></path><path d=\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\"></path><path d=\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\"></path>","slash":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"></line>","sliders":"<line x1=\"4\" y1=\"21\" x2=\"4\" y2=\"14\"></line><line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"3\"></line><line x1=\"20\" y1=\"21\" x2=\"20\" y2=\"16\"></line><line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"3\"></line><line x1=\"1\" y1=\"14\" x2=\"7\" y2=\"14\"></line><line x1=\"9\" y1=\"8\" x2=\"15\" y2=\"8\"></line><line x1=\"17\" y1=\"16\" x2=\"23\" y2=\"16\"></line>","smartphone":"<rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\"></rect><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"></line>","smile":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>","speaker":"<rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\"></rect><circle cx=\"12\" cy=\"14\" r=\"4\"></circle><line x1=\"12\" y1=\"6\" x2=\"12.01\" y2=\"6\"></line>","square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>","star":"<polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"></polygon>","stop-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><rect x=\"9\" y=\"9\" width=\"6\" height=\"6\"></rect>","sun":"<circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>","sunrise":"<path d=\"M17 18a5 5 0 0 0-10 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"9\"></line><line x1=\"4.22\" y1=\"10.22\" x2=\"5.64\" y2=\"11.64\"></line><line x1=\"1\" y1=\"18\" x2=\"3\" y2=\"18\"></line><line x1=\"21\" y1=\"18\" x2=\"23\" y2=\"18\"></line><line x1=\"18.36\" y1=\"11.64\" x2=\"19.78\" y2=\"10.22\"></line><line x1=\"23\" y1=\"22\" x2=\"1\" y2=\"22\"></line><polyline points=\"8 6 12 2 16 6\"></polyline>","sunset":"<path d=\"M17 18a5 5 0 0 0-10 0\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"2\"></line><line x1=\"4.22\" y1=\"10.22\" x2=\"5.64\" y2=\"11.64\"></line><line x1=\"1\" y1=\"18\" x2=\"3\" y2=\"18\"></line><line x1=\"21\" y1=\"18\" x2=\"23\" y2=\"18\"></line><line x1=\"18.36\" y1=\"11.64\" x2=\"19.78\" y2=\"10.22\"></line><line x1=\"23\" y1=\"22\" x2=\"1\" y2=\"22\"></line><polyline points=\"16 5 12 9 8 5\"></polyline>","table":"<path d=\"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\"></path>","tablet":"<rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\"></rect><line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\"></line>","tag":"<path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"></line>","target":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle>","terminal":"<polyline points=\"4 17 10 11 4 5\"></polyline><line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"></line>","thermometer":"<path d=\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\"></path>","thumbs-down":"<path d=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"></path>","thumbs-up":"<path d=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"></path>","toggle-left":"<rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" ry=\"7\"></rect><circle cx=\"8\" cy=\"12\" r=\"3\"></circle>","toggle-right":"<rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" ry=\"7\"></rect><circle cx=\"16\" cy=\"12\" r=\"3\"></circle>","tool":"<path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"></path>","trash-2":"<polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"></line><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"></line>","trash":"<polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path>","trello":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><rect x=\"7\" y=\"7\" width=\"3\" height=\"9\"></rect><rect x=\"14\" y=\"7\" width=\"3\" height=\"5\"></rect>","trending-down":"<polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"></polyline><polyline points=\"17 18 23 18 23 12\"></polyline>","trending-up":"<polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"></polyline><polyline points=\"17 6 23 6 23 12\"></polyline>","triangle":"<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path>","truck":"<rect x=\"1\" y=\"3\" width=\"15\" height=\"13\"></rect><polygon points=\"16 8 20 8 23 11 23 16 16 16 16 8\"></polygon><circle cx=\"5.5\" cy=\"18.5\" r=\"2.5\"></circle><circle cx=\"18.5\" cy=\"18.5\" r=\"2.5\"></circle>","tv":"<rect x=\"2\" y=\"7\" width=\"20\" height=\"15\" rx=\"2\" ry=\"2\"></rect><polyline points=\"17 2 12 7 7 2\"></polyline>","twitch":"<path d=\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\"></path>","twitter":"<path d=\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"></path>","type":"<polyline points=\"4 7 4 4 20 4 20 7\"></polyline><line x1=\"9\" y1=\"20\" x2=\"15\" y2=\"20\"></line><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"></line>","umbrella":"<path d=\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\"></path>","underline":"<path d=\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\"></path><line x1=\"4\" y1=\"21\" x2=\"20\" y2=\"21\"></line>","unlock":"<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 9.9-1\"></path>","upload-cloud":"<polyline points=\"16 16 12 12 8 16\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"></path><polyline points=\"16 16 12 12 8 16\"></polyline>","upload":"<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"17 8 12 3 7 8\"></polyline><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"></line>","user-check":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><polyline points=\"17 11 19 13 23 9\"></polyline>","user-minus":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>","user-plus":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"></line><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>","user-x":"<path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"18\" y1=\"8\" x2=\"23\" y2=\"13\"></line><line x1=\"23\" y1=\"8\" x2=\"18\" y2=\"13\"></line>","user":"<path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle>","users":"<path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"9\" cy=\"7\" r=\"4\"></circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"></path><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"></path>","video-off":"<path d=\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","video":"<polygon points=\"23 7 16 12 23 17 23 7\"></polygon><rect x=\"1\" y=\"5\" width=\"15\" height=\"14\" rx=\"2\" ry=\"2\"></rect>","voicemail":"<circle cx=\"5.5\" cy=\"11.5\" r=\"4.5\"></circle><circle cx=\"18.5\" cy=\"11.5\" r=\"4.5\"></circle><line x1=\"5.5\" y1=\"16\" x2=\"18.5\" y2=\"16\"></line>","volume-1":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path>","volume-2":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\"></path>","volume-x":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line>","volume":"<polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon>","watch":"<circle cx=\"12\" cy=\"12\" r=\"7\"></circle><polyline points=\"12 9 12 12 13.5 13.5\"></polyline><path d=\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\"></path>","wifi-off":"<line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line><path d=\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\"></path><path d=\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\"></path><path d=\"M10.71 5.05A16 16 0 0 1 22.58 9\"></path><path d=\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\"></path><path d=\"M8.53 16.11a6 6 0 0 1 6.95 0\"></path><line x1=\"12\" y1=\"20\" x2=\"12.01\" y2=\"20\"></line>","wifi":"<path d=\"M5 12.55a11 11 0 0 1 14.08 0\"></path><path d=\"M1.42 9a16 16 0 0 1 21.16 0\"></path><path d=\"M8.53 16.11a6 6 0 0 1 6.95 0\"></path><line x1=\"12\" y1=\"20\" x2=\"12.01\" y2=\"20\"></line>","wind":"<path d=\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\"></path>","x-circle":"<circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>","x-octagon":"<polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>","x-square":"<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>","x":"<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>","youtube":"<path d=\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\"></path><polygon points=\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\"></polygon>","zap-off":"<polyline points=\"12.41 6.75 13 2 10.57 4.92\"></polyline><polyline points=\"18.57 12.91 21 10 15.66 10\"></polyline><polyline points=\"8 8 3 14 12 14 11 22 16 16\"></polyline><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>","zap":"<polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"></polygon>","zoom-in":"<circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>","zoom-out":"<circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>"};
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/classnames/dedupe.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/classnames/dedupe.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
|
||
Copyright (c) 2016 Jed Watson.
|
||
Licensed under the MIT License (MIT), see
|
||
http://jedwatson.github.io/classnames
|
||
*/
|
||
/* global define */
|
||
|
||
(function () {
|
||
|
||
var classNames = (function () {
|
||
// don't inherit from Object so we can skip hasOwnProperty check later
|
||
// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232
|
||
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)) {
|
||
// set value to false instead of deleting it to avoid changing object structure
|
||
// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions
|
||
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;
|
||
|
||
// 'foo bar'
|
||
if (argType === 'string') {
|
||
_parseString(resultSet, arg);
|
||
|
||
// ['foo', 'bar', ...]
|
||
} else if (Array.isArray(arg)) {
|
||
_parseArray(resultSet, arg);
|
||
|
||
// { 'foo': true, ... }
|
||
} else if (argType === 'object') {
|
||
_parseObject(resultSet, arg);
|
||
|
||
// '130'
|
||
} else if (argType === 'number') {
|
||
_parseNumber(resultSet, arg);
|
||
}
|
||
}
|
||
|
||
function _classNames () {
|
||
// don't leak arguments
|
||
// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
|
||
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 module !== 'undefined' && module.exports) {
|
||
module.exports = classNames;
|
||
} else {
|
||
// register as 'classnames', consistent with npm package name
|
||
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
|
||
return classNames;
|
||
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
|
||
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
||
}
|
||
}());
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/es/array/from.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/core-js/es/array/from.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js");
|
||
__webpack_require__(/*! ../../modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js");
|
||
var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js/internals/path.js");
|
||
|
||
module.exports = path.Array.from;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/a-function.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/a-function.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.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":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/an-object.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
||
|
||
module.exports = function (it) {
|
||
if (!isObject(it)) {
|
||
throw TypeError(String(it) + ' is not an object');
|
||
} return it;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/array-from.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/array-from.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js");
|
||
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
|
||
var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js");
|
||
var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js");
|
||
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
|
||
var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js");
|
||
var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js");
|
||
|
||
// `Array.from` method
|
||
// https://tc39.github.io/ecma262/#sec-array.from
|
||
module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
|
||
var O = toObject(arrayLike);
|
||
var C = typeof this == 'function' ? this : Array;
|
||
var argumentsLength = arguments.length;
|
||
var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
|
||
var mapping = mapfn !== undefined;
|
||
var index = 0;
|
||
var iteratorMethod = getIteratorMethod(O);
|
||
var length, result, step, iterator;
|
||
if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
|
||
// if the target is not iterable or it's an array with the default iterator - use a simple case
|
||
if (iteratorMethod != undefined && !(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":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/array-includes.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
||
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
|
||
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
|
||
|
||
// `Array.prototype.{ indexOf, includes }` methods implementation
|
||
// false -> Array#indexOf
|
||
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
|
||
// true -> Array#includes
|
||
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
|
||
module.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;
|
||
// Array#includes uses SameValueZero equality algorithm
|
||
// eslint-disable-next-line no-self-compare
|
||
if (IS_INCLUDES && el != el) while (length > index) {
|
||
value = O[index++];
|
||
// eslint-disable-next-line no-self-compare
|
||
if (value != value) return true;
|
||
// Array#indexOf ignores holes, Array#includes - not
|
||
} 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":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/bind-context.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");
|
||
|
||
// optional / simple context binding
|
||
module.exports = function (fn, that, length) {
|
||
aFunction(fn);
|
||
if (that === undefined) return fn;
|
||
switch (length) {
|
||
case 0: return function () {
|
||
return fn.call(that);
|
||
};
|
||
case 1: return function (a) {
|
||
return fn.call(that, a);
|
||
};
|
||
case 2: return function (a, b) {
|
||
return fn.call(that, a, b);
|
||
};
|
||
case 3: return function (a, b, c) {
|
||
return fn.call(that, a, b, c);
|
||
};
|
||
}
|
||
return function (/* ...args */) {
|
||
return fn.apply(that, arguments);
|
||
};
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!
|
||
\****************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
||
|
||
// call something on iterator step with safe closing on error
|
||
module.exports = function (iterator, fn, value, ENTRIES) {
|
||
try {
|
||
return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
|
||
// 7.4.6 IteratorClose(iterator, completion)
|
||
} catch (error) {
|
||
var returnMethod = iterator['return'];
|
||
if (returnMethod !== undefined) anObject(returnMethod.call(iterator));
|
||
throw error;
|
||
}
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!
|
||
\**************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./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;
|
||
};
|
||
// eslint-disable-next-line no-throw-literal
|
||
Array.from(iteratorWithReturn, function () { throw 2; });
|
||
} catch (error) { /* empty */ }
|
||
|
||
module.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) { /* empty */ }
|
||
return ITERATION_SUPPORT;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/classof-raw.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/classof-raw.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
var toString = {}.toString;
|
||
|
||
module.exports = function (it) {
|
||
return toString.call(it).slice(8, -1);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/classof.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/core-js/internals/classof.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
||
|
||
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
||
// ES3 wrong here
|
||
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
|
||
|
||
// fallback for IE11 Script Access Denied error
|
||
var tryGet = function (it, key) {
|
||
try {
|
||
return it[key];
|
||
} catch (error) { /* empty */ }
|
||
};
|
||
|
||
// getting tag from ES6+ `Object.prototype.toString`
|
||
module.exports = function (it) {
|
||
var O, tag, result;
|
||
return it === undefined ? 'Undefined' : it === null ? 'Null'
|
||
// @@toStringTag case
|
||
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
|
||
// builtinTag case
|
||
: CORRECT_ARGUMENTS ? classofRaw(O)
|
||
// ES3 arguments fallback
|
||
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
|
||
\***********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
|
||
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
|
||
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
||
|
||
module.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":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
||
|
||
module.exports = !fails(function () {
|
||
function F() { /* empty */ }
|
||
F.prototype.constructor = null;
|
||
return Object.getPrototypeOf(new F()) !== F.prototype;
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/create-iterator-constructor.js":
|
||
/*!***********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!
|
||
\***********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype;
|
||
var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
|
||
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
|
||
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");
|
||
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
|
||
|
||
var returnThis = function () { return this; };
|
||
|
||
module.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":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
|
||
\**********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = function (bitmap, value) {
|
||
return {
|
||
enumerable: !(bitmap & 1),
|
||
configurable: !(bitmap & 2),
|
||
writable: !(bitmap & 4),
|
||
value: value
|
||
};
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/create-property.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/create-property.js ***!
|
||
\***********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
|
||
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
||
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
|
||
|
||
module.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":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/define-iterator.js ***!
|
||
\***********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
|
||
var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js");
|
||
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
|
||
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");
|
||
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");
|
||
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
|
||
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
||
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
|
||
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
|
||
var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./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; };
|
||
|
||
module.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 values() { 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;
|
||
|
||
// fix native
|
||
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') {
|
||
hide(CurrentIteratorPrototype, ITERATOR, returnThis);
|
||
}
|
||
}
|
||
// Set @@toStringTag to native iterators
|
||
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
|
||
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
|
||
}
|
||
}
|
||
|
||
// fix Array#{values, @@iterator}.name in V8 / FF
|
||
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
|
||
INCORRECT_VALUES_NAME = true;
|
||
defaultIterator = function values() { return nativeIterator.call(this); };
|
||
}
|
||
|
||
// define iterator
|
||
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
|
||
hide(IterablePrototype, ITERATOR, defaultIterator);
|
||
}
|
||
Iterators[NAME] = defaultIterator;
|
||
|
||
// export additional methods
|
||
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":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/descriptors.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
||
|
||
// Thank's IE8 for his funny defineProperty
|
||
module.exports = !fails(function () {
|
||
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/document-create-element.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/document-create-element.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
||
|
||
var document = global.document;
|
||
// typeof document.createElement is 'object' in old IE
|
||
var exist = isObject(document) && isObject(document.createElement);
|
||
|
||
module.exports = function (it) {
|
||
return exist ? document.createElement(it) : {};
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/enum-bug-keys.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
// IE8- don't enum bug keys
|
||
module.exports = [
|
||
'constructor',
|
||
'hasOwnProperty',
|
||
'isPrototypeOf',
|
||
'propertyIsEnumerable',
|
||
'toLocaleString',
|
||
'toString',
|
||
'valueOf'
|
||
];
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/export.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/core-js/internals/export.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
|
||
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
|
||
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
|
||
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
|
||
var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
|
||
var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
|
||
|
||
/*
|
||
options.target - name of the target object
|
||
options.global - target is the global object
|
||
options.stat - export as static methods of target
|
||
options.proto - export as prototype methods of target
|
||
options.real - real prototype method for the `pure` version
|
||
options.forced - export even if the native feature is available
|
||
options.bind - bind methods to the target, required for the `pure` version
|
||
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
|
||
options.unsafe - use the simple assignment of property instead of delete + defineProperty
|
||
options.sham - add a flag to not completely full polyfills
|
||
options.enumerable - export as enumerable property
|
||
options.noTargetGet - prevent calling a getter on target
|
||
*/
|
||
module.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 = global;
|
||
} else if (STATIC) {
|
||
target = global[TARGET] || setGlobal(TARGET, {});
|
||
} else {
|
||
target = (global[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);
|
||
// contained in target
|
||
if (!FORCED && targetProperty !== undefined) {
|
||
if (typeof sourceProperty === typeof targetProperty) continue;
|
||
copyConstructorProperties(sourceProperty, targetProperty);
|
||
}
|
||
// add a flag to not completely full polyfills
|
||
if (options.sham || (targetProperty && targetProperty.sham)) {
|
||
hide(sourceProperty, 'sham', true);
|
||
}
|
||
// extend global
|
||
redefine(target, key, sourceProperty, options);
|
||
}
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/fails.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/core-js/internals/fails.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = function (exec) {
|
||
try {
|
||
return !!exec();
|
||
} catch (error) {
|
||
return true;
|
||
}
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/function-to-string.js":
|
||
/*!**************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/function-to-string.js ***!
|
||
\**************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
||
|
||
module.exports = shared('native-function-to-string', Function.toString);
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/get-iterator-method.js":
|
||
/*!***************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/get-iterator-method.js ***!
|
||
\***************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
|
||
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
||
|
||
var ITERATOR = wellKnownSymbol('iterator');
|
||
|
||
module.exports = function (it) {
|
||
if (it != undefined) return it[ITERATOR]
|
||
|| it['@@iterator']
|
||
|| Iterators[classof(it)];
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/global.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/core-js/internals/global.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';
|
||
var check = function (it) {
|
||
return it && it.Math == Math && it;
|
||
};
|
||
|
||
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
||
module.exports =
|
||
// eslint-disable-next-line no-undef
|
||
check(typeof globalThis == O && globalThis) ||
|
||
check(typeof window == O && window) ||
|
||
check(typeof self == O && self) ||
|
||
check(typeof global == O && global) ||
|
||
// eslint-disable-next-line no-new-func
|
||
Function('return this')();
|
||
|
||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")));
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/has.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/core-js/internals/has.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
var hasOwnProperty = {}.hasOwnProperty;
|
||
|
||
module.exports = function (it, key) {
|
||
return hasOwnProperty.call(it, key);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/hidden-keys.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/hidden-keys.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = {};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/hide.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/core-js/internals/hide.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
||
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
||
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
|
||
|
||
module.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":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/core-js/internals/html.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
|
||
var document = global.document;
|
||
|
||
module.exports = document && document.documentElement;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/ie8-dom-define.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
||
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
||
var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
|
||
|
||
// Thank's IE8 for his funny defineProperty
|
||
module.exports = !DESCRIPTORS && !fails(function () {
|
||
return Object.defineProperty(createElement('div'), 'a', {
|
||
get: function () { return 7; }
|
||
}).a != 7;
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/indexed-object.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/indexed-object.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
// fallback for non-array-like ES3 and non-enumerable old V8 strings
|
||
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
||
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
|
||
|
||
var split = ''.split;
|
||
|
||
module.exports = fails(function () {
|
||
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
|
||
// eslint-disable-next-line no-prototype-builtins
|
||
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":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/internal-state.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js");
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
||
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
|
||
var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
|
||
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
|
||
|
||
var WeakMap = global.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) {
|
||
hide(it, STATE, metadata);
|
||
return metadata;
|
||
};
|
||
get = function (it) {
|
||
return objectHas(it, STATE) ? it[STATE] : {};
|
||
};
|
||
has = function (it) {
|
||
return objectHas(it, STATE);
|
||
};
|
||
}
|
||
|
||
module.exports = {
|
||
set: set,
|
||
get: get,
|
||
has: has,
|
||
enforce: enforce,
|
||
getterFor: getterFor
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/is-array-iterator-method.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
||
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
|
||
|
||
var ITERATOR = wellKnownSymbol('iterator');
|
||
var ArrayPrototype = Array.prototype;
|
||
|
||
// check on default Array iterator
|
||
module.exports = function (it) {
|
||
return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/is-forced.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/is-forced.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var fails = __webpack_require__(/*! ../internals/fails */ "./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';
|
||
|
||
module.exports = isForced;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/is-object.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/is-object.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = function (it) {
|
||
return typeof it === 'object' ? it !== null : typeof it === 'function';
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/is-pure.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/core-js/internals/is-pure.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = false;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/iterators-core.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/iterators-core.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
|
||
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
||
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
|
||
|
||
var ITERATOR = wellKnownSymbol('iterator');
|
||
var BUGGY_SAFARI_ITERATORS = false;
|
||
|
||
var returnThis = function () { return this; };
|
||
|
||
// `%IteratorPrototype%` object
|
||
// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
|
||
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
|
||
|
||
if ([].keys) {
|
||
arrayIterator = [].keys();
|
||
// Safari 8 has buggy iterators w/o `next`
|
||
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
|
||
else {
|
||
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
|
||
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
|
||
}
|
||
}
|
||
|
||
if (IteratorPrototype == undefined) IteratorPrototype = {};
|
||
|
||
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
|
||
if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
|
||
|
||
module.exports = {
|
||
IteratorPrototype: IteratorPrototype,
|
||
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/iterators.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/iterators.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
module.exports = {};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/native-symbol.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/native-symbol.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
||
|
||
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
|
||
// Chrome 38 Symbol has incorrect toString conversion
|
||
// eslint-disable-next-line no-undef
|
||
return !String(Symbol());
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/native-weak-map.js":
|
||
/*!***********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/native-weak-map.js ***!
|
||
\***********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
|
||
|
||
var WeakMap = global.WeakMap;
|
||
|
||
module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/object-create.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-create.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
||
var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
|
||
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
|
||
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
|
||
var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
|
||
var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
|
||
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
|
||
var IE_PROTO = sharedKey('IE_PROTO');
|
||
|
||
var PROTOTYPE = 'prototype';
|
||
var Empty = function () { /* empty */ };
|
||
|
||
// Create object with fake `null` prototype: use iframe Object with cleared prototype
|
||
var createDict = function () {
|
||
// Thrash, waste and sodomy: IE GC bug
|
||
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();
|
||
};
|
||
|
||
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
|
||
module.exports = Object.create || function create(O, Properties) {
|
||
var result;
|
||
if (O !== null) {
|
||
Empty[PROTOTYPE] = anObject(O);
|
||
result = new Empty();
|
||
Empty[PROTOTYPE] = null;
|
||
// add "__proto__" for Object.getPrototypeOf polyfill
|
||
result[IE_PROTO] = O;
|
||
} else result = createDict();
|
||
return Properties === undefined ? result : defineProperties(result, Properties);
|
||
};
|
||
|
||
hiddenKeys[IE_PROTO] = true;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/object-define-properties.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-define-properties.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
||
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
||
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
||
var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
|
||
|
||
module.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":
|
||
/*!******************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-define-property.js ***!
|
||
\******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
||
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
|
||
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
||
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
|
||
|
||
var nativeDefineProperty = Object.defineProperty;
|
||
|
||
exports.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) { /* empty */ }
|
||
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":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
|
||
\******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
||
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
|
||
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
|
||
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
||
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
|
||
|
||
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
||
|
||
exports.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) { /* empty */ }
|
||
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
|
||
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
|
||
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
|
||
|
||
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
|
||
|
||
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
|
||
return internalObjectKeys(O, hiddenKeys);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
|
||
\***************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
exports.f = Object.getOwnPropertySymbols;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/object-get-prototype-of.js":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
|
||
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
|
||
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js");
|
||
|
||
var IE_PROTO = sharedKey('IE_PROTO');
|
||
var ObjectPrototype = Object.prototype;
|
||
|
||
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
|
||
module.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":
|
||
/*!****************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-keys-internal.js ***!
|
||
\****************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
||
var arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js");
|
||
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
|
||
|
||
var arrayIndexOf = arrayIncludes(false);
|
||
|
||
module.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);
|
||
// Don't enum bug & hidden keys
|
||
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":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-keys.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
|
||
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
|
||
|
||
// 19.1.2.14 / 15.2.3.14 Object.keys(O)
|
||
module.exports = Object.keys || function keys(O) {
|
||
return internalObjectKeys(O, enumBugKeys);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
|
||
\*************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
|
||
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
||
|
||
// Nashorn ~ JDK8 bug
|
||
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
|
||
|
||
exports.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":
|
||
/*!*******************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!
|
||
\*******************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");
|
||
|
||
// Works with __proto__ only. Old v8 can't work with null proto objects.
|
||
/* eslint-disable no-proto */
|
||
module.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) { /* empty */ }
|
||
return function setPrototypeOf(O, proto) {
|
||
validateSetPrototypeOfArguments(O, proto);
|
||
if (correctSetter) setter.call(O, proto);
|
||
else O.__proto__ = proto;
|
||
return O;
|
||
};
|
||
}() : undefined);
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/own-keys.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/own-keys.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
|
||
var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
|
||
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
||
|
||
var Reflect = global.Reflect;
|
||
|
||
// all object keys, includes non-enumerable and symbols
|
||
module.exports = Reflect && Reflect.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":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/core-js/internals/path.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/redefine.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/redefine.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
||
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
|
||
var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
|
||
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./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);
|
||
});
|
||
|
||
(module.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')) hide(value, 'name', key);
|
||
enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
|
||
}
|
||
if (O === global) {
|
||
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 hide(O, key, value);
|
||
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
||
})(Function.prototype, 'toString', function toString() {
|
||
return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/require-object-coercible.js":
|
||
/*!********************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/require-object-coercible.js ***!
|
||
\********************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
// `RequireObjectCoercible` abstract operation
|
||
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
|
||
module.exports = function (it) {
|
||
if (it == undefined) throw TypeError("Can't call method on " + it);
|
||
return it;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/set-global.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/set-global.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
|
||
|
||
module.exports = function (key, value) {
|
||
try {
|
||
hide(global, key, value);
|
||
} catch (error) {
|
||
global[key] = value;
|
||
} return value;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/set-to-string-tag.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/set-to-string-tag.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;
|
||
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
|
||
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
||
|
||
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
||
|
||
module.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":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/shared-key.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
||
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
|
||
|
||
var keys = shared('keys');
|
||
|
||
module.exports = function (key) {
|
||
return keys[key] || (keys[key] = uid(key));
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/shared.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/core-js/internals/shared.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
|
||
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
|
||
|
||
var SHARED = '__core-js_shared__';
|
||
var store = global[SHARED] || setGlobal(SHARED, {});
|
||
|
||
(module.exports = function (key, value) {
|
||
return store[key] || (store[key] = value !== undefined ? value : {});
|
||
})('versions', []).push({
|
||
version: '3.1.3',
|
||
mode: IS_PURE ? 'pure' : 'global',
|
||
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/string-at.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/string-at.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
|
||
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
||
|
||
// CONVERT_TO_STRING: true -> String#at
|
||
// CONVERT_TO_STRING: false -> String#codePointAt
|
||
module.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 ? '' : undefined;
|
||
first = S.charCodeAt(position);
|
||
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|
||
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
|
||
? CONVERT_TO_STRING ? S.charAt(position) : first
|
||
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/to-absolute-index.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/to-absolute-index.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
|
||
|
||
var max = Math.max;
|
||
var min = Math.min;
|
||
|
||
// Helper for a popular repeating case of the spec:
|
||
// Let integer be ? ToInteger(index).
|
||
// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
|
||
module.exports = function (index, length) {
|
||
var integer = toInteger(index);
|
||
return integer < 0 ? max(integer + length, 0) : min(integer, length);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/to-indexed-object.js":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/to-indexed-object.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
// toObject with fallback for non-array-like ES3 strings
|
||
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
|
||
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
||
|
||
module.exports = function (it) {
|
||
return IndexedObject(requireObjectCoercible(it));
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/to-integer.js":
|
||
/*!******************************************************!*\
|
||
!*** ./node_modules/core-js/internals/to-integer.js ***!
|
||
\******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
var ceil = Math.ceil;
|
||
var floor = Math.floor;
|
||
|
||
// `ToInteger` abstract operation
|
||
// https://tc39.github.io/ecma262/#sec-tointeger
|
||
module.exports = function (argument) {
|
||
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/to-length.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/to-length.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
|
||
|
||
var min = Math.min;
|
||
|
||
// `ToLength` abstract operation
|
||
// https://tc39.github.io/ecma262/#sec-tolength
|
||
module.exports = function (argument) {
|
||
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/to-object.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/core-js/internals/to-object.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
||
|
||
// `ToObject` abstract operation
|
||
// https://tc39.github.io/ecma262/#sec-toobject
|
||
module.exports = function (argument) {
|
||
return Object(requireObjectCoercible(argument));
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/to-primitive.js":
|
||
/*!********************************************************!*\
|
||
!*** ./node_modules/core-js/internals/to-primitive.js ***!
|
||
\********************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
||
|
||
// 7.1.1 ToPrimitive(input [, PreferredType])
|
||
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
|
||
// and the second argument - flag - preferred type is a string
|
||
module.exports = function (it, S) {
|
||
if (!isObject(it)) return it;
|
||
var fn, val;
|
||
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
|
||
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
|
||
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
|
||
throw TypeError("Can't convert object to primitive value");
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/uid.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/core-js/internals/uid.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
var id = 0;
|
||
var postfix = Math.random();
|
||
|
||
module.exports = function (key) {
|
||
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!
|
||
\*******************************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
||
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
||
|
||
module.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":
|
||
/*!*************************************************************!*\
|
||
!*** ./node_modules/core-js/internals/well-known-symbol.js ***!
|
||
\*************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
||
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
||
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
|
||
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js");
|
||
|
||
var Symbol = global.Symbol;
|
||
var store = shared('wks');
|
||
|
||
module.exports = function (name) {
|
||
return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
|
||
|| (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
|
||
};
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/modules/es.array.from.js":
|
||
/*!*******************************************************!*\
|
||
!*** ./node_modules/core-js/modules/es.array.from.js ***!
|
||
\*******************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
|
||
var from = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js");
|
||
var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js");
|
||
|
||
var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
|
||
Array.from(iterable);
|
||
});
|
||
|
||
// `Array.from` method
|
||
// https://tc39.github.io/ecma262/#sec-array.from
|
||
$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {
|
||
from: from
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/core-js/modules/es.string.iterator.js":
|
||
/*!************************************************************!*\
|
||
!*** ./node_modules/core-js/modules/es.string.iterator.js ***!
|
||
\************************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
var codePointAt = __webpack_require__(/*! ../internals/string-at */ "./node_modules/core-js/internals/string-at.js");
|
||
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
|
||
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js");
|
||
|
||
var STRING_ITERATOR = 'String Iterator';
|
||
var setInternalState = InternalStateModule.set;
|
||
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
|
||
|
||
// `String.prototype[@@iterator]` method
|
||
// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
|
||
defineIterator(String, 'String', function (iterated) {
|
||
setInternalState(this, {
|
||
type: STRING_ITERATOR,
|
||
string: String(iterated),
|
||
index: 0
|
||
});
|
||
// `%StringIteratorPrototype%.next` method
|
||
// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
|
||
}, function next() {
|
||
var state = getInternalState(this);
|
||
var string = state.string;
|
||
var index = state.index;
|
||
var point;
|
||
if (index >= string.length) return { value: undefined, done: true };
|
||
point = codePointAt(string, index, true);
|
||
state.index += point.length;
|
||
return { value: point, done: false };
|
||
});
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./node_modules/webpack/buildin/global.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/global.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports) {
|
||
|
||
var g;
|
||
|
||
// This works in non-strict mode
|
||
g = (function() {
|
||
return this;
|
||
})();
|
||
|
||
try {
|
||
// This works if eval is allowed (see CSP)
|
||
g = g || Function("return this")() || (1, eval)("this");
|
||
} catch (e) {
|
||
// This works if the window reference is available
|
||
if (typeof window === "object") g = window;
|
||
}
|
||
|
||
// g can still be undefined, but nothing to do about it...
|
||
// We return undefined, instead of nothing here, so it's
|
||
// easier to handle this case. if(!global) { ...}
|
||
|
||
module.exports = g;
|
||
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/default-attrs.json":
|
||
/*!********************************!*\
|
||
!*** ./src/default-attrs.json ***!
|
||
\********************************/
|
||
/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */
|
||
/***/ (function(module) {
|
||
|
||
module.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":
|
||
/*!*********************!*\
|
||
!*** ./src/icon.js ***!
|
||
\*********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
|
||
Object.defineProperty(exports, "__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__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js");
|
||
|
||
var _dedupe2 = _interopRequireDefault(_dedupe);
|
||
|
||
var _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ "./src/default-attrs.json");
|
||
|
||
var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||
|
||
var Icon = function () {
|
||
function Icon(name, contents) {
|
||
var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
||
|
||
_classCallCheck(this, Icon);
|
||
|
||
this.name = name;
|
||
this.contents = contents;
|
||
this.tags = tags;
|
||
this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });
|
||
}
|
||
|
||
/**
|
||
* Create an SVG string.
|
||
* @param {Object} attrs
|
||
* @returns {string}
|
||
*/
|
||
|
||
|
||
_createClass(Icon, [{
|
||
key: 'toSvg',
|
||
value: function toSvg() {
|
||
var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
||
|
||
var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });
|
||
|
||
return '<svg ' + attrsToString(combinedAttrs) + '>' + this.contents + '</svg>';
|
||
}
|
||
|
||
/**
|
||
* Return string representation of an `Icon`.
|
||
*
|
||
* Added for backward compatibility. If old code expects `feather.icons.<name>`
|
||
* to be a string, `toString()` will get implicitly called.
|
||
*
|
||
* @returns {string}
|
||
*/
|
||
|
||
}, {
|
||
key: 'toString',
|
||
value: function toString() {
|
||
return this.contents;
|
||
}
|
||
}]);
|
||
|
||
return Icon;
|
||
}();
|
||
|
||
/**
|
||
* Convert attributes object to string of HTML attributes.
|
||
* @param {Object} attrs
|
||
* @returns {string}
|
||
*/
|
||
|
||
|
||
function attrsToString(attrs) {
|
||
return Object.keys(attrs).map(function (key) {
|
||
return key + '="' + attrs[key] + '"';
|
||
}).join(' ');
|
||
}
|
||
|
||
exports.default = Icon;
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/icons.js":
|
||
/*!**********************!*\
|
||
!*** ./src/icons.js ***!
|
||
\**********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _icon = __webpack_require__(/*! ./icon */ "./src/icon.js");
|
||
|
||
var _icon2 = _interopRequireDefault(_icon);
|
||
|
||
var _icons = __webpack_require__(/*! ../dist/icons.json */ "./dist/icons.json");
|
||
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
|
||
var _tags = __webpack_require__(/*! ./tags.json */ "./src/tags.json");
|
||
|
||
var _tags2 = _interopRequireDefault(_tags);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
exports.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":
|
||
/*!**********************!*\
|
||
!*** ./src/index.js ***!
|
||
\**********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
|
||
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
|
||
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
|
||
var _toSvg = __webpack_require__(/*! ./to-svg */ "./src/to-svg.js");
|
||
|
||
var _toSvg2 = _interopRequireDefault(_toSvg);
|
||
|
||
var _replace = __webpack_require__(/*! ./replace */ "./src/replace.js");
|
||
|
||
var _replace2 = _interopRequireDefault(_replace);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
module.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/replace.js":
|
||
/*!************************!*\
|
||
!*** ./src/replace.js ***!
|
||
\************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
|
||
Object.defineProperty(exports, "__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; }; /* eslint-env browser */
|
||
|
||
|
||
var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js");
|
||
|
||
var _dedupe2 = _interopRequireDefault(_dedupe);
|
||
|
||
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
|
||
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
/**
|
||
* Replace all HTML elements that have a `data-feather` attribute with SVG markup
|
||
* corresponding to the element's `data-feather` attribute value.
|
||
* @param {Object} attrs
|
||
*/
|
||
function replace() {
|
||
var attrs = arguments.length > 0 && arguments[0] !== undefined ? 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 (element) {
|
||
return replaceElement(element, attrs);
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Replace a single HTML element with SVG markup
|
||
* corresponding to the element's `data-feather` attribute value.
|
||
* @param {HTMLElement} element
|
||
* @param {Object} attrs
|
||
*/
|
||
function replaceElement(element) {
|
||
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||
|
||
var elementAttrs = getAttrs(element);
|
||
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');
|
||
|
||
element.parentNode.replaceChild(svgElement, element);
|
||
}
|
||
|
||
/**
|
||
* Get the attributes of an HTML element.
|
||
* @param {HTMLElement} element
|
||
* @returns {Object}
|
||
*/
|
||
function getAttrs(element) {
|
||
return Array.from(element.attributes).reduce(function (attrs, attr) {
|
||
attrs[attr.name] = attr.value;
|
||
return attrs;
|
||
}, {});
|
||
}
|
||
|
||
exports.default = replace;
|
||
|
||
/***/ }),
|
||
|
||
/***/ "./src/tags.json":
|
||
/*!***********************!*\
|
||
!*** ./src/tags.json ***!
|
||
\***********************/
|
||
/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, 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, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */
|
||
/***/ (function(module) {
|
||
|
||
module.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":
|
||
/*!***********************!*\
|
||
!*** ./src/to-svg.js ***!
|
||
\***********************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
|
||
Object.defineProperty(exports, "__esModule", {
|
||
value: true
|
||
});
|
||
|
||
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
|
||
|
||
var _icons2 = _interopRequireDefault(_icons);
|
||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
||
/**
|
||
* Create an SVG string.
|
||
* @deprecated
|
||
* @param {string} name
|
||
* @param {Object} attrs
|
||
* @returns {string}
|
||
*/
|
||
function toSvg(name) {
|
||
var attrs = arguments.length > 1 && arguments[1] !== undefined ? 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);
|
||
}
|
||
|
||
exports.default = toSvg;
|
||
|
||
/***/ }),
|
||
|
||
/***/ 0:
|
||
/*!**************************************************!*\
|
||
!*** multi core-js/es/array/from ./src/index.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */
|
||
/***/ (function(module, exports, __webpack_require__) {
|
||
|
||
__webpack_require__(/*! core-js/es/array/from */"./node_modules/core-js/es/array/from.js");
|
||
module.exports = __webpack_require__(/*! /home/runner/work/feather/feather/src/index.js */"./src/index.js");
|
||
|
||
|
||
/***/ })
|
||
|
||
/******/ });
|
||
});
|
||
|
||
});
|
||
|
||
const VIEW_TYPE_SHORTCUTS_ANALYZER = 'keyboard-shortcuts-visualization';
|
||
const DEFAULT_FILTER_SETTINGS = {
|
||
FeaturedFirst: false,
|
||
StrictSearch: false,
|
||
HighlightCustom: false,
|
||
HighlightDuplicates: false,
|
||
DisplayWOhotkeys: false,
|
||
DisplayIDs: false,
|
||
};
|
||
const DEFAULT_PLUGIN_SETTINGS = {
|
||
showStatusBarItem: true,
|
||
filterSettings: DEFAULT_FILTER_SETTINGS,
|
||
featuredCommandIDs: [],
|
||
};
|
||
const mainSectionQwerty = {
|
||
name: 'main',
|
||
gridRatio: 3.75,
|
||
rows: [
|
||
[
|
||
{
|
||
label: 'Escape',
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'empty',
|
||
width: 1,
|
||
},
|
||
{
|
||
label: 'F1',
|
||
},
|
||
{
|
||
label: 'F2',
|
||
},
|
||
{
|
||
label: 'F3',
|
||
},
|
||
{
|
||
label: 'F4',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
width: 0.5,
|
||
},
|
||
{
|
||
label: 'F5',
|
||
},
|
||
{
|
||
label: 'F6',
|
||
},
|
||
{
|
||
label: 'F7',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
width: 0.5,
|
||
},
|
||
{
|
||
label: 'F8',
|
||
},
|
||
{
|
||
label: 'F9',
|
||
},
|
||
{
|
||
label: 'F10',
|
||
},
|
||
{
|
||
label: 'F11',
|
||
},
|
||
{
|
||
label: 'F12',
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: '`',
|
||
},
|
||
{
|
||
label: '1',
|
||
},
|
||
{
|
||
label: '2',
|
||
},
|
||
{
|
||
label: '3',
|
||
},
|
||
{
|
||
label: '4',
|
||
},
|
||
{
|
||
label: '5',
|
||
},
|
||
{
|
||
label: '6',
|
||
},
|
||
{
|
||
label: '7',
|
||
},
|
||
{
|
||
label: '8',
|
||
},
|
||
{
|
||
label: '9',
|
||
},
|
||
{
|
||
label: '0',
|
||
},
|
||
{
|
||
label: '-',
|
||
},
|
||
{
|
||
label: '=',
|
||
},
|
||
{
|
||
label: 'Backspace',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 2,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Tab',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 1.5,
|
||
},
|
||
{
|
||
label: 'Q',
|
||
},
|
||
{
|
||
label: 'W',
|
||
},
|
||
{
|
||
label: 'E',
|
||
},
|
||
{
|
||
label: 'R',
|
||
},
|
||
{
|
||
label: 'T',
|
||
},
|
||
{
|
||
label: 'Y',
|
||
},
|
||
{
|
||
label: 'U',
|
||
},
|
||
{
|
||
label: 'I',
|
||
},
|
||
{
|
||
label: 'O',
|
||
},
|
||
{
|
||
label: 'P',
|
||
},
|
||
{
|
||
label: '[',
|
||
},
|
||
{
|
||
label: ']',
|
||
},
|
||
{
|
||
label: '\\',
|
||
width: 1.5,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'CapsLock',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
tryUnicode: true,
|
||
width: 1.75,
|
||
},
|
||
{
|
||
label: 'A',
|
||
},
|
||
{
|
||
label: 'S',
|
||
},
|
||
{
|
||
label: 'D',
|
||
},
|
||
{
|
||
label: 'F',
|
||
},
|
||
{
|
||
label: 'G',
|
||
},
|
||
{
|
||
label: 'H',
|
||
},
|
||
{
|
||
label: 'J',
|
||
},
|
||
{
|
||
label: 'K',
|
||
},
|
||
{
|
||
label: 'L',
|
||
},
|
||
{
|
||
label: ';',
|
||
},
|
||
{
|
||
label: "'",
|
||
},
|
||
{
|
||
label: 'Enter',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 2.25,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Shift',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
tryUnicode: true,
|
||
width: 2,
|
||
},
|
||
{
|
||
label: 'Z',
|
||
},
|
||
{
|
||
label: 'X',
|
||
},
|
||
{
|
||
label: 'C',
|
||
},
|
||
{
|
||
label: 'V',
|
||
},
|
||
{
|
||
label: 'B',
|
||
},
|
||
{
|
||
label: 'N',
|
||
},
|
||
{
|
||
label: 'M',
|
||
},
|
||
{
|
||
label: ',',
|
||
},
|
||
{
|
||
label: '.',
|
||
},
|
||
{
|
||
label: '/',
|
||
},
|
||
{
|
||
label: 'Shift',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 3,
|
||
tryUnicode: true,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Control',
|
||
fontSize: 'small',
|
||
tryUnicode: true,
|
||
caps: 'all-small-caps',
|
||
width: 1.5,
|
||
},
|
||
{
|
||
label: 'Meta',
|
||
tryUnicode: true,
|
||
fontSize: 'small',
|
||
width: 1.5,
|
||
},
|
||
{
|
||
label: 'Alt',
|
||
tryUnicode: true,
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 1.5,
|
||
},
|
||
{
|
||
label: ' ',
|
||
width: 6,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Alt',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 1.5,
|
||
},
|
||
{
|
||
label: 'Meta',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 1.5,
|
||
},
|
||
{
|
||
label: 'Control',
|
||
fontSize: 'small',
|
||
caps: 'all-small-caps',
|
||
width: 1.5,
|
||
},
|
||
],
|
||
],
|
||
};
|
||
// keyboard layout for other keys and cursor keys
|
||
const keyboardOther = {
|
||
name: 'other',
|
||
gridRatio: 0.75,
|
||
rows: [
|
||
[
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Insert',
|
||
smallText: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Home',
|
||
smallText: true,
|
||
},
|
||
{
|
||
label: 'PageUp',
|
||
smallText: true,
|
||
tryUnicode: true,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Delete',
|
||
tryUnicode: true,
|
||
smallText: true,
|
||
},
|
||
{
|
||
label: 'End',
|
||
smallText: true,
|
||
},
|
||
{
|
||
label: 'PageDown',
|
||
tryUnicode: true,
|
||
smallText: true,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'ArrowUp',
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'ArrowLeft',
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'ArrowDown',
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'ArrowRight',
|
||
tryUnicode: true,
|
||
},
|
||
],
|
||
],
|
||
};
|
||
// keyboard layout in rows for number pad
|
||
const keyboardNum = {
|
||
name: 'num',
|
||
gridRatio: 1,
|
||
rows: [
|
||
[
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
{
|
||
label: 'empty',
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'NumLock',
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: '/',
|
||
},
|
||
{
|
||
label: '*',
|
||
},
|
||
{
|
||
label: '-',
|
||
},
|
||
{
|
||
label: 'Numpad7',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Numpad8',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Numpad9',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: '+',
|
||
height: 2,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Numpad4',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Numpad5',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Numpad6',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Numpad1',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Numpad2',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Numpad3',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
},
|
||
{
|
||
label: 'Enter',
|
||
height: 2,
|
||
// tryUnicode: true,
|
||
},
|
||
],
|
||
[
|
||
{
|
||
label: 'Numpad0',
|
||
strictCode: true,
|
||
tryUnicode: true,
|
||
width: 2,
|
||
},
|
||
{
|
||
label: '.',
|
||
},
|
||
],
|
||
],
|
||
};
|
||
const SpecialSymbols = {
|
||
Command: '⌘',
|
||
Option: '⌥',
|
||
ArrowLeft: '←',
|
||
ArrowUp: '↑',
|
||
ArrowRight: '→',
|
||
ArrowDown: '↓',
|
||
Space: '⎵',
|
||
' ': '⎵',
|
||
};
|
||
// https://www.toptal.com/developers/keycode/table-of-all-keycodes
|
||
const JavaSciptKeyCodes = {
|
||
3: {
|
||
Key: 'Cancel',
|
||
Code: 'Pause',
|
||
},
|
||
8: {
|
||
Key: 'Backspace',
|
||
Code: 'Backspace',
|
||
Unicode: '⌫',
|
||
},
|
||
9: {
|
||
Key: 'Tab',
|
||
Code: 'Tab',
|
||
Unicode: '⇥',
|
||
},
|
||
12: {
|
||
Key: 'Clear',
|
||
Code: 'NumLock',
|
||
Unicode: '⌧',
|
||
},
|
||
13: {
|
||
Key: 'Enter',
|
||
Code: 'Enter',
|
||
Unicode: '⏎',
|
||
},
|
||
16: {
|
||
Key: 'Shift',
|
||
Code: 'ShiftLeft',
|
||
Unicode: '⇧',
|
||
},
|
||
17: {
|
||
Key: 'Control',
|
||
Code: 'ControlLeft',
|
||
Unicode: 'Ctrl',
|
||
},
|
||
18: {
|
||
Key: 'Alt',
|
||
Code: 'AltLeft',
|
||
},
|
||
19: {
|
||
Key: 'Pause',
|
||
Code: 'Pause',
|
||
},
|
||
20: {
|
||
Key: 'CapsLock',
|
||
Code: 'CapsLock',
|
||
Unicode: '⇪',
|
||
},
|
||
27: {
|
||
Key: 'Escape',
|
||
Code: 'Escape',
|
||
Unicode: 'Esc',
|
||
},
|
||
32: {
|
||
Key: ' ',
|
||
Code: 'Space',
|
||
Unicode: '⎵',
|
||
},
|
||
33: {
|
||
Key: 'PageUp',
|
||
Code: 'Numpad9',
|
||
Unicode: 'Page<br>Up',
|
||
},
|
||
34: {
|
||
Key: 'PageDown',
|
||
Code: 'Numpad3',
|
||
Unicode: 'Page<br>Down',
|
||
},
|
||
35: {
|
||
Key: 'End',
|
||
Code: 'Numpad1',
|
||
Unicode: '⇢',
|
||
},
|
||
36: {
|
||
Key: 'Home',
|
||
Code: 'Numpad7',
|
||
Unicode: '⌂',
|
||
},
|
||
37: {
|
||
Key: 'ArrowLeft',
|
||
Code: 'ArrowLeft',
|
||
Unicode: '←',
|
||
},
|
||
38: {
|
||
Key: 'ArrowUp',
|
||
Code: 'ArrowUp',
|
||
Unicode: '↑',
|
||
},
|
||
39: {
|
||
Key: 'ArrowRight',
|
||
Code: 'ArrowRight',
|
||
Unicode: '→',
|
||
},
|
||
40: {
|
||
Key: 'ArrowDown',
|
||
Code: 'ArrowDown',
|
||
Unicode: '↓',
|
||
},
|
||
44: {
|
||
Key: 'F13',
|
||
Code: 'F13',
|
||
Unicode: '⎙',
|
||
},
|
||
45: {
|
||
Key: 'Insert',
|
||
Code: 'Numpad0',
|
||
Unicode: 'Ins',
|
||
},
|
||
46: {
|
||
Key: 'Delete',
|
||
Code: 'NumpadDecimal',
|
||
Unicode: 'Del',
|
||
},
|
||
48: {
|
||
Key: '0',
|
||
Code: 'Digit0',
|
||
Unicode: '0',
|
||
},
|
||
49: {
|
||
Key: '1',
|
||
Code: 'Digit1',
|
||
Unicode: '1',
|
||
},
|
||
50: {
|
||
Key: '2',
|
||
Code: 'Digit2',
|
||
Unicode: '2',
|
||
},
|
||
51: {
|
||
Key: '3',
|
||
Code: 'Digit3',
|
||
Unicode: '3',
|
||
},
|
||
52: {
|
||
Key: '4',
|
||
Code: 'Digit4',
|
||
Unicode: '4',
|
||
},
|
||
53: {
|
||
Key: '5',
|
||
Code: 'Digit5',
|
||
Unicode: '5',
|
||
},
|
||
54: {
|
||
Key: '6',
|
||
Code: 'Digit6',
|
||
Unicode: '6',
|
||
},
|
||
55: {
|
||
Key: '7',
|
||
Code: 'Digit7',
|
||
Unicode: '7',
|
||
},
|
||
56: {
|
||
Key: '8',
|
||
Code: 'Digit8',
|
||
Unicode: '8',
|
||
},
|
||
57: {
|
||
Key: '9',
|
||
Code: 'Digit9',
|
||
Unicode: '9',
|
||
},
|
||
58: {
|
||
Key: ':',
|
||
Code: 'Period',
|
||
},
|
||
59: {
|
||
Key: ';',
|
||
Code: 'Semicolon',
|
||
},
|
||
60: {
|
||
Key: '<',
|
||
Code: 'Backquote',
|
||
},
|
||
// 61: {
|
||
// Key: '=',
|
||
// Code: 'Equal',
|
||
// }, // firefox
|
||
63: {
|
||
Key: 'ß',
|
||
Code: 'Minus',
|
||
},
|
||
65: {
|
||
Key: 'a',
|
||
Code: 'KeyA',
|
||
},
|
||
66: {
|
||
Key: 'b',
|
||
Code: 'KeyB',
|
||
},
|
||
67: {
|
||
Key: 'c',
|
||
Code: 'KeyC',
|
||
},
|
||
68: {
|
||
Key: 'd',
|
||
Code: 'KeyD',
|
||
},
|
||
69: {
|
||
Key: 'e',
|
||
Code: 'KeyE',
|
||
},
|
||
70: {
|
||
Key: 'f',
|
||
Code: 'KeyF',
|
||
},
|
||
71: {
|
||
Key: 'g',
|
||
Code: 'KeyG',
|
||
},
|
||
72: {
|
||
Key: 'h',
|
||
Code: 'KeyH',
|
||
},
|
||
73: {
|
||
Key: 'i',
|
||
Code: 'KeyI',
|
||
},
|
||
74: {
|
||
Key: 'j',
|
||
Code: 'KeyJ',
|
||
},
|
||
75: {
|
||
Key: 'k',
|
||
Code: 'KeyK',
|
||
},
|
||
76: {
|
||
Key: 'l',
|
||
Code: 'KeyL',
|
||
},
|
||
77: {
|
||
Key: 'm',
|
||
Code: 'KeyM',
|
||
},
|
||
78: {
|
||
Key: 'n',
|
||
Code: 'KeyN',
|
||
},
|
||
79: {
|
||
Key: 'o',
|
||
Code: 'KeyO',
|
||
},
|
||
80: {
|
||
Key: 'p',
|
||
Code: 'KeyP',
|
||
},
|
||
81: {
|
||
Key: 'q',
|
||
Code: 'KeyQ',
|
||
},
|
||
82: {
|
||
Key: 'r',
|
||
Code: 'KeyR',
|
||
},
|
||
83: {
|
||
Key: 's',
|
||
Code: 'KeyS',
|
||
},
|
||
84: {
|
||
Key: 't',
|
||
Code: 'KeyT',
|
||
},
|
||
85: {
|
||
Key: 'u',
|
||
Code: 'KeyU',
|
||
},
|
||
86: {
|
||
Key: 'v',
|
||
Code: 'KeyV',
|
||
},
|
||
87: {
|
||
Key: 'w',
|
||
Code: 'KeyW',
|
||
},
|
||
88: {
|
||
Key: 'x',
|
||
Code: 'KeyX',
|
||
},
|
||
89: {
|
||
Key: 'y',
|
||
Code: 'KeyY',
|
||
},
|
||
90: {
|
||
Key: 'z',
|
||
Code: 'KeyZ',
|
||
},
|
||
91: {
|
||
Key: 'Meta',
|
||
Code: 'MetaLeft',
|
||
},
|
||
92: {
|
||
Key: 'Meta',
|
||
Code: 'MetaRight',
|
||
},
|
||
93: {
|
||
Key: 'ContextMenu',
|
||
Code: 'ContextMenu',
|
||
},
|
||
96: {
|
||
Key: '0',
|
||
Code: 'Numpad0',
|
||
Unicode: '0',
|
||
},
|
||
97: {
|
||
Key: '1',
|
||
Code: 'Numpad1',
|
||
Unicode: '1',
|
||
},
|
||
98: {
|
||
Key: '2',
|
||
Code: 'Numpad2',
|
||
Unicode: '2',
|
||
},
|
||
99: {
|
||
Key: '3',
|
||
Code: 'Numpad3',
|
||
Unicode: '3',
|
||
},
|
||
100: {
|
||
Key: '4',
|
||
Code: 'Numpad4',
|
||
Unicode: '4',
|
||
},
|
||
101: {
|
||
Key: '5',
|
||
Code: 'Numpad5',
|
||
Unicode: '5',
|
||
},
|
||
102: {
|
||
Key: '6',
|
||
Code: 'Numpad6',
|
||
Unicode: '6',
|
||
},
|
||
103: {
|
||
Key: '7',
|
||
Code: 'Numpad7',
|
||
Unicode: '8',
|
||
},
|
||
104: {
|
||
Key: '8',
|
||
Code: 'Numpad8',
|
||
Unicode: '8',
|
||
},
|
||
105: {
|
||
Key: '9',
|
||
Code: 'Numpad9',
|
||
Unicode: '9',
|
||
},
|
||
106: {
|
||
Key: '*',
|
||
Code: 'NumpadMultiply',
|
||
Unicode: '×',
|
||
},
|
||
107: {
|
||
Key: '+',
|
||
Code: 'NumpadAdd',
|
||
},
|
||
108: {
|
||
Key: ',',
|
||
Code: 'NumpadDecimal',
|
||
},
|
||
109: {
|
||
Key: '-',
|
||
Code: 'NumpadSubtract',
|
||
},
|
||
110: {
|
||
Key: '.',
|
||
Code: 'NumpadDecimal',
|
||
},
|
||
111: {
|
||
Key: '/',
|
||
Code: 'NumpadDivide',
|
||
},
|
||
112: {
|
||
Key: 'F1',
|
||
Code: 'F1',
|
||
},
|
||
113: {
|
||
Key: 'F2',
|
||
Code: 'F2',
|
||
},
|
||
114: {
|
||
Key: 'F3',
|
||
Code: 'F3',
|
||
},
|
||
115: {
|
||
Key: 'F4',
|
||
Code: 'F4',
|
||
},
|
||
116: {
|
||
Key: 'F5',
|
||
Code: 'F5',
|
||
},
|
||
117: {
|
||
Key: 'F6',
|
||
Code: 'F6',
|
||
},
|
||
118: {
|
||
Key: 'F7',
|
||
Code: 'F7',
|
||
},
|
||
119: {
|
||
Key: 'F8',
|
||
Code: 'F8',
|
||
},
|
||
120: {
|
||
Key: 'F9',
|
||
Code: 'F9',
|
||
},
|
||
121: {
|
||
Key: 'F10',
|
||
Code: 'F10',
|
||
},
|
||
122: {
|
||
Key: 'F11',
|
||
Code: 'F11',
|
||
},
|
||
123: {
|
||
Key: 'F12',
|
||
Code: 'F12',
|
||
},
|
||
124: {
|
||
Key: 'F13',
|
||
Code: 'F13',
|
||
},
|
||
125: {
|
||
Key: 'F14',
|
||
Code: 'F14',
|
||
},
|
||
126: {
|
||
Key: 'F15',
|
||
Code: 'F15',
|
||
},
|
||
127: {
|
||
Key: 'F16',
|
||
Code: 'F16',
|
||
},
|
||
128: {
|
||
Key: 'F17',
|
||
Code: 'F17',
|
||
},
|
||
129: {
|
||
Key: 'F18',
|
||
Code: 'F18',
|
||
},
|
||
130: {
|
||
Key: 'F19',
|
||
Code: 'F19',
|
||
},
|
||
131: {
|
||
Key: 'F20',
|
||
Code: 'F20',
|
||
},
|
||
132: {
|
||
Key: 'F21',
|
||
Code: 'F21',
|
||
},
|
||
133: {
|
||
Key: 'F22',
|
||
Code: 'F22',
|
||
},
|
||
134: {
|
||
Key: 'F23',
|
||
Code: 'F23',
|
||
},
|
||
135: {
|
||
Key: 'F24',
|
||
Code: 'F24',
|
||
},
|
||
136: {
|
||
Key: 'F25',
|
||
Code: 'F25',
|
||
},
|
||
137: {
|
||
Key: 'F26',
|
||
Code: 'F26',
|
||
},
|
||
138: {
|
||
Key: 'F27',
|
||
Code: 'F27',
|
||
},
|
||
139: {
|
||
Key: 'F28',
|
||
Code: 'F28',
|
||
},
|
||
140: {
|
||
Key: 'F29',
|
||
Code: 'F29',
|
||
},
|
||
141: {
|
||
Key: 'F30',
|
||
Code: 'F30',
|
||
},
|
||
142: {
|
||
Key: 'F31',
|
||
Code: 'F31',
|
||
},
|
||
143: {
|
||
Key: 'F32',
|
||
Code: 'F32',
|
||
},
|
||
144: {
|
||
Key: 'NumLock',
|
||
Code: 'NumLock',
|
||
Unicode: '⇭',
|
||
},
|
||
145: {
|
||
Key: 'ScrollLock',
|
||
Code: 'ScrollLock',
|
||
Unicode: '⤓',
|
||
},
|
||
160: {
|
||
Key: '[',
|
||
Code: 'BracketLeft',
|
||
},
|
||
161: {
|
||
Key: 'Dead',
|
||
Code: 'BracketRight',
|
||
},
|
||
163: {
|
||
Key: `\\`,
|
||
Code: 'Backquote',
|
||
},
|
||
164: {
|
||
Key: '$',
|
||
Code: 'Backslash',
|
||
},
|
||
165: {
|
||
Key: '^ù',
|
||
Code: 'Quote',
|
||
},
|
||
169: {
|
||
Key: ')',
|
||
Code: 'Minus',
|
||
},
|
||
170: {
|
||
Key: '*',
|
||
Code: 'BackSlash',
|
||
},
|
||
171: {
|
||
Key: '+',
|
||
Code: 'BracketRight',
|
||
},
|
||
173: {
|
||
Key: '-',
|
||
Code: 'Minus',
|
||
},
|
||
174: {
|
||
Key: 'AudioVolumeDown',
|
||
Code: 'AudioVolumeDown',
|
||
},
|
||
176: {
|
||
Key: 'MediaTractNext',
|
||
Code: 'MediaTrackNext',
|
||
},
|
||
177: {
|
||
Key: 'MediaTractPrevious',
|
||
Code: 'MediaTrackPrevious',
|
||
},
|
||
179: {
|
||
Key: 'MediaPlayPause',
|
||
Code: 'MediaPlayPause',
|
||
},
|
||
180: {
|
||
Key: 'LaunchMail',
|
||
Code: 'LaunchMail',
|
||
Unicode: '✉',
|
||
},
|
||
181: {
|
||
Key: 'AudioVolumeMute',
|
||
Code: 'VolumeMute',
|
||
},
|
||
182: {
|
||
Key: 'AudioVolumeDown',
|
||
Code: 'VolumeDown',
|
||
},
|
||
183: {
|
||
Key: 'AudioVolumeUp',
|
||
Code: 'VolumeUp',
|
||
},
|
||
186: {
|
||
Key: ';',
|
||
Code: 'Semicolon',
|
||
},
|
||
187: {
|
||
Key: '=',
|
||
Code: 'Equal',
|
||
},
|
||
188: {
|
||
Key: ',',
|
||
Code: 'Comma',
|
||
},
|
||
189: {
|
||
Key: '-',
|
||
Code: 'Minus',
|
||
},
|
||
190: {
|
||
Key: '.',
|
||
Code: 'Period',
|
||
},
|
||
191: {
|
||
Key: '/',
|
||
Code: 'Slash',
|
||
},
|
||
192: {
|
||
Key: '`',
|
||
Code: 'Backquote',
|
||
},
|
||
193: {
|
||
Key: '/',
|
||
Code: 'IntlRo',
|
||
},
|
||
194: {
|
||
Key: '.',
|
||
Code: 'NumpadComma',
|
||
},
|
||
219: {
|
||
Key: '[',
|
||
Code: 'BracketLeft',
|
||
},
|
||
220: {
|
||
Key: '\\',
|
||
Code: 'Backslash',
|
||
},
|
||
221: {
|
||
Key: ']',
|
||
Code: 'BracketRight',
|
||
},
|
||
222: {
|
||
Key: "'",
|
||
Code: 'Quote',
|
||
},
|
||
223: {
|
||
Key: '`',
|
||
Code: 'Backquote',
|
||
},
|
||
224: {
|
||
Key: 'Meta',
|
||
Code: 'Meta',
|
||
Unicode: '⌘',
|
||
},
|
||
225: {
|
||
Key: 'AltGraph',
|
||
Code: 'AltRight',
|
||
Unicode: '⌥',
|
||
},
|
||
226: {
|
||
Key: '\\',
|
||
Code: 'IntlBackslash',
|
||
},
|
||
};
|
||
|
||
function noop() { }
|
||
const identity = x => x;
|
||
function assign(tar, src) {
|
||
// @ts-ignore
|
||
for (const k in src)
|
||
tar[k] = src[k];
|
||
return tar;
|
||
}
|
||
function run(fn) {
|
||
return fn();
|
||
}
|
||
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');
|
||
}
|
||
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 component_subscribe(component, store, callback) {
|
||
component.$$.on_destroy.push(subscribe(store, callback));
|
||
}
|
||
function create_slot(definition, ctx, $$scope, fn) {
|
||
if (definition) {
|
||
const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
|
||
return definition[0](slot_ctx);
|
||
}
|
||
}
|
||
function get_slot_context(definition, ctx, $$scope, fn) {
|
||
return definition[1] && fn
|
||
? assign($$scope.ctx.slice(), definition[1](fn(ctx)))
|
||
: $$scope.ctx;
|
||
}
|
||
function get_slot_changes(definition, $$scope, dirty, fn) {
|
||
if (definition[2] && fn) {
|
||
const lets = definition[2](fn(dirty));
|
||
if ($$scope.dirty === undefined) {
|
||
return lets;
|
||
}
|
||
if (typeof lets === 'object') {
|
||
const merged = [];
|
||
const len = Math.max($$scope.dirty.length, lets.length);
|
||
for (let i = 0; i < len; i += 1) {
|
||
merged[i] = $$scope.dirty[i] | lets[i];
|
||
}
|
||
return merged;
|
||
}
|
||
return $$scope.dirty | lets;
|
||
}
|
||
return $$scope.dirty;
|
||
}
|
||
function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
|
||
if (slot_changes) {
|
||
const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
|
||
slot.p(slot_context, slot_changes);
|
||
}
|
||
}
|
||
function get_all_dirty_from_scope($$scope) {
|
||
if ($$scope.ctx.length > 32) {
|
||
const dirty = [];
|
||
const length = $$scope.ctx.length / 32;
|
||
for (let i = 0; i < length; i++) {
|
||
dirty[i] = -1;
|
||
}
|
||
return dirty;
|
||
}
|
||
return -1;
|
||
}
|
||
function exclude_internal_props(props) {
|
||
const result = {};
|
||
for (const k in props)
|
||
if (k[0] !== '$')
|
||
result[k] = props[k];
|
||
return result;
|
||
}
|
||
function compute_rest_props(props, keys) {
|
||
const rest = {};
|
||
keys = new Set(keys);
|
||
for (const k in props)
|
||
if (!keys.has(k) && k[0] !== '$')
|
||
rest[k] = props[k];
|
||
return rest;
|
||
}
|
||
function null_to_empty(value) {
|
||
return value == null ? '' : value;
|
||
}
|
||
function set_store_value(store, ret, value) {
|
||
store.set(value);
|
||
return ret;
|
||
}
|
||
function action_destroyer(action_result) {
|
||
return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
|
||
}
|
||
|
||
const is_client = typeof window !== 'undefined';
|
||
let now = is_client
|
||
? () => window.performance.now()
|
||
: () => Date.now();
|
||
let raf = is_client ? cb => requestAnimationFrame(cb) : noop;
|
||
|
||
const tasks = new Set();
|
||
function run_tasks(now) {
|
||
tasks.forEach(task => {
|
||
if (!task.c(now)) {
|
||
tasks.delete(task);
|
||
task.f();
|
||
}
|
||
});
|
||
if (tasks.size !== 0)
|
||
raf(run_tasks);
|
||
}
|
||
/**
|
||
* Creates a new task that runs on each raf frame
|
||
* until it returns a falsy value or is aborted
|
||
*/
|
||
function loop(callback) {
|
||
let task;
|
||
if (tasks.size === 0)
|
||
raf(run_tasks);
|
||
return {
|
||
promise: new Promise(fulfill => {
|
||
tasks.add(task = { c: callback, f: fulfill });
|
||
}),
|
||
abort() {
|
||
tasks.delete(task);
|
||
}
|
||
};
|
||
}
|
||
function append(target, node) {
|
||
target.appendChild(node);
|
||
}
|
||
function append_styles(target, style_sheet_id, styles) {
|
||
const append_styles_to = get_root_for_style(target);
|
||
if (!append_styles_to.getElementById(style_sheet_id)) {
|
||
const style = element('style');
|
||
style.id = style_sheet_id;
|
||
style.textContent = styles;
|
||
append_stylesheet(append_styles_to, style);
|
||
}
|
||
}
|
||
function get_root_for_style(node) {
|
||
if (!node)
|
||
return document;
|
||
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
|
||
if (root && root.host) {
|
||
return root;
|
||
}
|
||
return node.ownerDocument;
|
||
}
|
||
function append_empty_stylesheet(node) {
|
||
const style_element = element('style');
|
||
append_stylesheet(get_root_for_style(node), style_element);
|
||
return style_element.sheet;
|
||
}
|
||
function append_stylesheet(node, style) {
|
||
append(node.head || node, style);
|
||
}
|
||
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 svg_element(name) {
|
||
return document.createElementNS('http://www.w3.org/2000/svg', 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 set_svg_attributes(node, attributes) {
|
||
for (const key in attributes) {
|
||
attr(node, key, attributes[key]);
|
||
}
|
||
}
|
||
function children(element) {
|
||
return Array.from(element.childNodes);
|
||
}
|
||
function set_data(text, data) {
|
||
data = '' + data;
|
||
if (text.wholeText !== data)
|
||
text.data = data;
|
||
}
|
||
function set_input_value(input, value) {
|
||
input.value = value == null ? '' : value;
|
||
}
|
||
function set_style(node, key, value, important) {
|
||
if (value === null) {
|
||
node.style.removeProperty(key);
|
||
}
|
||
else {
|
||
node.style.setProperty(key, value, important ? 'important' : '');
|
||
}
|
||
}
|
||
// unfortunately this can't be a constant as that wouldn't be tree-shakeable
|
||
// so we cache the result instead
|
||
let crossorigin;
|
||
function is_crossorigin() {
|
||
if (crossorigin === undefined) {
|
||
crossorigin = false;
|
||
try {
|
||
if (typeof window !== 'undefined' && window.parent) {
|
||
void window.parent.document;
|
||
}
|
||
}
|
||
catch (error) {
|
||
crossorigin = true;
|
||
}
|
||
}
|
||
return crossorigin;
|
||
}
|
||
function add_resize_listener(node, fn) {
|
||
const computed_style = getComputedStyle(node);
|
||
if (computed_style.position === 'static') {
|
||
node.style.position = 'relative';
|
||
}
|
||
const iframe = element('iframe');
|
||
iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +
|
||
'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');
|
||
iframe.setAttribute('aria-hidden', 'true');
|
||
iframe.tabIndex = -1;
|
||
const crossorigin = is_crossorigin();
|
||
let unsubscribe;
|
||
if (crossorigin) {
|
||
iframe.src = "data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>";
|
||
unsubscribe = listen(window, 'message', (event) => {
|
||
if (event.source === iframe.contentWindow)
|
||
fn();
|
||
});
|
||
}
|
||
else {
|
||
iframe.src = 'about:blank';
|
||
iframe.onload = () => {
|
||
unsubscribe = listen(iframe.contentWindow, 'resize', fn);
|
||
};
|
||
}
|
||
append(node, iframe);
|
||
return () => {
|
||
if (crossorigin) {
|
||
unsubscribe();
|
||
}
|
||
else if (unsubscribe && iframe.contentWindow) {
|
||
unsubscribe();
|
||
}
|
||
detach(iframe);
|
||
};
|
||
}
|
||
function toggle_class(element, name, toggle) {
|
||
element.classList[toggle ? 'add' : 'remove'](name);
|
||
}
|
||
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
|
||
const e = document.createEvent('CustomEvent');
|
||
e.initCustomEvent(type, bubbles, cancelable, detail);
|
||
return e;
|
||
}
|
||
|
||
// we need to store the information for multiple documents because a Svelte application could also contain iframes
|
||
// https://github.com/sveltejs/svelte/issues/3624
|
||
const managed_styles = new Map();
|
||
let active = 0;
|
||
// https://github.com/darkskyapp/string-hash/blob/master/index.js
|
||
function hash(str) {
|
||
let hash = 5381;
|
||
let i = str.length;
|
||
while (i--)
|
||
hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
|
||
return hash >>> 0;
|
||
}
|
||
function create_style_information(doc, node) {
|
||
const info = { stylesheet: append_empty_stylesheet(node), rules: {} };
|
||
managed_styles.set(doc, info);
|
||
return info;
|
||
}
|
||
function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {
|
||
const step = 16.666 / duration;
|
||
let keyframes = '{\n';
|
||
for (let p = 0; p <= 1; p += step) {
|
||
const t = a + (b - a) * ease(p);
|
||
keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`;
|
||
}
|
||
const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`;
|
||
const name = `__svelte_${hash(rule)}_${uid}`;
|
||
const doc = get_root_for_style(node);
|
||
const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);
|
||
if (!rules[name]) {
|
||
rules[name] = true;
|
||
stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
|
||
}
|
||
const animation = node.style.animation || '';
|
||
node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;
|
||
active += 1;
|
||
return name;
|
||
}
|
||
function delete_rule(node, name) {
|
||
const previous = (node.style.animation || '').split(', ');
|
||
const next = previous.filter(name
|
||
? anim => anim.indexOf(name) < 0 // remove specific animation
|
||
: anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations
|
||
);
|
||
const deleted = previous.length - next.length;
|
||
if (deleted) {
|
||
node.style.animation = next.join(', ');
|
||
active -= deleted;
|
||
if (!active)
|
||
clear_rules();
|
||
}
|
||
}
|
||
function clear_rules() {
|
||
raf(() => {
|
||
if (active)
|
||
return;
|
||
managed_styles.forEach(info => {
|
||
const { stylesheet } = info;
|
||
let i = stylesheet.cssRules.length;
|
||
while (i--)
|
||
stylesheet.deleteRule(i);
|
||
info.rules = {};
|
||
});
|
||
managed_styles.clear();
|
||
});
|
||
}
|
||
|
||
let current_component;
|
||
function set_current_component(component) {
|
||
current_component = component;
|
||
}
|
||
function get_current_component() {
|
||
if (!current_component)
|
||
throw new Error('Function called outside component initialization');
|
||
return current_component;
|
||
}
|
||
function onMount(fn) {
|
||
get_current_component().$$.on_mount.push(fn);
|
||
}
|
||
function onDestroy(fn) {
|
||
get_current_component().$$.on_destroy.push(fn);
|
||
}
|
||
function createEventDispatcher() {
|
||
const component = get_current_component();
|
||
return (type, detail, { cancelable = false } = {}) => {
|
||
const callbacks = component.$$.callbacks[type];
|
||
if (callbacks) {
|
||
// TODO are there situations where events could be dispatched
|
||
// in a server (non-DOM) environment?
|
||
const event = custom_event(type, detail, { cancelable });
|
||
callbacks.slice().forEach(fn => {
|
||
fn.call(component, event);
|
||
});
|
||
return !event.defaultPrevented;
|
||
}
|
||
return true;
|
||
};
|
||
}
|
||
|
||
const dirty_components = [];
|
||
const binding_callbacks = [];
|
||
const render_callbacks = [];
|
||
const flush_callbacks = [];
|
||
const resolved_promise = Promise.resolve();
|
||
let update_scheduled = false;
|
||
function schedule_update() {
|
||
if (!update_scheduled) {
|
||
update_scheduled = true;
|
||
resolved_promise.then(flush);
|
||
}
|
||
}
|
||
function add_render_callback(fn) {
|
||
render_callbacks.push(fn);
|
||
}
|
||
function add_flush_callback(fn) {
|
||
flush_callbacks.push(fn);
|
||
}
|
||
// flush() calls callbacks in this order:
|
||
// 1. All beforeUpdate callbacks, in order: parents before children
|
||
// 2. All bind:this callbacks, in reverse order: children before parents.
|
||
// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
|
||
// for afterUpdates called during the initial onMount, which are called in
|
||
// reverse order: children before parents.
|
||
// Since callbacks might update component values, which could trigger another
|
||
// call to flush(), the following steps guard against this:
|
||
// 1. During beforeUpdate, any updated components will be added to the
|
||
// dirty_components array and will cause a reentrant call to flush(). Because
|
||
// the flush index is kept outside the function, the reentrant call will pick
|
||
// up where the earlier call left off and go through all dirty components. The
|
||
// current_component value is saved and restored so that the reentrant call will
|
||
// not interfere with the "parent" flush() call.
|
||
// 2. bind:this callbacks cannot trigger new flush() calls.
|
||
// 3. During afterUpdate, any updated components will NOT have their afterUpdate
|
||
// callback called a second time; the seen_callbacks set, outside the flush()
|
||
// function, guarantees this behavior.
|
||
const seen_callbacks = new Set();
|
||
let flushidx = 0; // Do *not* move this inside the flush() function
|
||
function flush() {
|
||
const saved_component = current_component;
|
||
do {
|
||
// first, call beforeUpdate functions
|
||
// and update components
|
||
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()();
|
||
// then, once components are updated, call
|
||
// afterUpdate functions. This may cause
|
||
// subsequent updates...
|
||
for (let i = 0; i < render_callbacks.length; i += 1) {
|
||
const callback = render_callbacks[i];
|
||
if (!seen_callbacks.has(callback)) {
|
||
// ...so guard against infinite loops
|
||
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);
|
||
}
|
||
}
|
||
|
||
let promise;
|
||
function wait() {
|
||
if (!promise) {
|
||
promise = Promise.resolve();
|
||
promise.then(() => {
|
||
promise = null;
|
||
});
|
||
}
|
||
return promise;
|
||
}
|
||
function dispatch(node, direction, kind) {
|
||
node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));
|
||
}
|
||
const outroing = new Set();
|
||
let outros;
|
||
function group_outros() {
|
||
outros = {
|
||
r: 0,
|
||
c: [],
|
||
p: outros // parent group
|
||
};
|
||
}
|
||
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, detach, callback) {
|
||
if (block && block.o) {
|
||
if (outroing.has(block))
|
||
return;
|
||
outroing.add(block);
|
||
outros.c.push(() => {
|
||
outroing.delete(block);
|
||
if (callback) {
|
||
if (detach)
|
||
block.d(1);
|
||
callback();
|
||
}
|
||
});
|
||
block.o(local);
|
||
}
|
||
else if (callback) {
|
||
callback();
|
||
}
|
||
}
|
||
const null_transition = { duration: 0 };
|
||
function create_in_transition(node, fn, params) {
|
||
let config = fn(node, params);
|
||
let running = false;
|
||
let animation_name;
|
||
let task;
|
||
let uid = 0;
|
||
function cleanup() {
|
||
if (animation_name)
|
||
delete_rule(node, animation_name);
|
||
}
|
||
function go() {
|
||
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
|
||
if (css)
|
||
animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);
|
||
tick(0, 1);
|
||
const start_time = now() + delay;
|
||
const end_time = start_time + duration;
|
||
if (task)
|
||
task.abort();
|
||
running = true;
|
||
add_render_callback(() => dispatch(node, true, 'start'));
|
||
task = loop(now => {
|
||
if (running) {
|
||
if (now >= end_time) {
|
||
tick(1, 0);
|
||
dispatch(node, true, 'end');
|
||
cleanup();
|
||
return running = false;
|
||
}
|
||
if (now >= start_time) {
|
||
const t = easing((now - start_time) / duration);
|
||
tick(t, 1 - t);
|
||
}
|
||
}
|
||
return running;
|
||
});
|
||
}
|
||
let started = false;
|
||
return {
|
||
start() {
|
||
if (started)
|
||
return;
|
||
started = true;
|
||
delete_rule(node);
|
||
if (is_function(config)) {
|
||
config = config();
|
||
wait().then(go);
|
||
}
|
||
else {
|
||
go();
|
||
}
|
||
},
|
||
invalidate() {
|
||
started = false;
|
||
},
|
||
end() {
|
||
if (running) {
|
||
cleanup();
|
||
running = false;
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_out_transition(node, fn, params) {
|
||
let config = fn(node, params);
|
||
let running = true;
|
||
let animation_name;
|
||
const group = outros;
|
||
group.r += 1;
|
||
function go() {
|
||
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
|
||
if (css)
|
||
animation_name = create_rule(node, 1, 0, duration, delay, easing, css);
|
||
const start_time = now() + delay;
|
||
const end_time = start_time + duration;
|
||
add_render_callback(() => dispatch(node, false, 'start'));
|
||
loop(now => {
|
||
if (running) {
|
||
if (now >= end_time) {
|
||
tick(0, 1);
|
||
dispatch(node, false, 'end');
|
||
if (!--group.r) {
|
||
// this will result in `end()` being called,
|
||
// so we don't need to clean up here
|
||
run_all(group.c);
|
||
}
|
||
return false;
|
||
}
|
||
if (now >= start_time) {
|
||
const t = easing((now - start_time) / duration);
|
||
tick(1 - t, t);
|
||
}
|
||
}
|
||
return running;
|
||
});
|
||
}
|
||
if (is_function(config)) {
|
||
wait().then(() => {
|
||
// @ts-ignore
|
||
config = config();
|
||
go();
|
||
});
|
||
}
|
||
else {
|
||
go();
|
||
}
|
||
return {
|
||
end(reset) {
|
||
if (reset && config.tick) {
|
||
config.tick(1, 0);
|
||
}
|
||
if (running) {
|
||
if (animation_name)
|
||
delete_rule(node, animation_name);
|
||
running = false;
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_bidirectional_transition(node, fn, params, intro) {
|
||
let config = fn(node, params);
|
||
let t = intro ? 0 : 1;
|
||
let running_program = null;
|
||
let pending_program = null;
|
||
let animation_name = null;
|
||
function clear_animation() {
|
||
if (animation_name)
|
||
delete_rule(node, animation_name);
|
||
}
|
||
function init(program, duration) {
|
||
const d = (program.b - t);
|
||
duration *= Math.abs(d);
|
||
return {
|
||
a: t,
|
||
b: program.b,
|
||
d,
|
||
duration,
|
||
start: program.start,
|
||
end: program.start + duration,
|
||
group: program.group
|
||
};
|
||
}
|
||
function go(b) {
|
||
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
|
||
const program = {
|
||
start: now() + delay,
|
||
b
|
||
};
|
||
if (!b) {
|
||
// @ts-ignore todo: improve typings
|
||
program.group = outros;
|
||
outros.r += 1;
|
||
}
|
||
if (running_program || pending_program) {
|
||
pending_program = program;
|
||
}
|
||
else {
|
||
// if this is an intro, and there's a delay, we need to do
|
||
// an initial tick and/or apply CSS animation immediately
|
||
if (css) {
|
||
clear_animation();
|
||
animation_name = create_rule(node, t, b, duration, delay, easing, css);
|
||
}
|
||
if (b)
|
||
tick(0, 1);
|
||
running_program = init(program, duration);
|
||
add_render_callback(() => dispatch(node, b, 'start'));
|
||
loop(now => {
|
||
if (pending_program && now > pending_program.start) {
|
||
running_program = init(pending_program, duration);
|
||
pending_program = null;
|
||
dispatch(node, running_program.b, 'start');
|
||
if (css) {
|
||
clear_animation();
|
||
animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
|
||
}
|
||
}
|
||
if (running_program) {
|
||
if (now >= running_program.end) {
|
||
tick(t = running_program.b, 1 - t);
|
||
dispatch(node, running_program.b, 'end');
|
||
if (!pending_program) {
|
||
// we're done
|
||
if (running_program.b) {
|
||
// intro — we can tidy up immediately
|
||
clear_animation();
|
||
}
|
||
else {
|
||
// outro — needs to be coordinated
|
||
if (!--running_program.group.r)
|
||
run_all(running_program.group.c);
|
||
}
|
||
}
|
||
running_program = null;
|
||
}
|
||
else if (now >= running_program.start) {
|
||
const p = now - running_program.start;
|
||
t = running_program.a + running_program.d * easing(p / running_program.duration);
|
||
tick(t, 1 - t);
|
||
}
|
||
}
|
||
return !!(running_program || pending_program);
|
||
});
|
||
}
|
||
}
|
||
return {
|
||
run(b) {
|
||
if (is_function(config)) {
|
||
wait().then(() => {
|
||
// @ts-ignore
|
||
config = config();
|
||
go(b);
|
||
});
|
||
}
|
||
else {
|
||
go(b);
|
||
}
|
||
},
|
||
end() {
|
||
clear_animation();
|
||
running_program = pending_program = null;
|
||
}
|
||
};
|
||
}
|
||
function outro_and_destroy_block(block, lookup) {
|
||
transition_out(block, 1, 1, () => {
|
||
lookup.delete(block.key);
|
||
});
|
||
}
|
||
function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {
|
||
let o = old_blocks.length;
|
||
let n = list.length;
|
||
let i = o;
|
||
const old_indexes = {};
|
||
while (i--)
|
||
old_indexes[old_blocks[i].key] = i;
|
||
const new_blocks = [];
|
||
const new_lookup = new Map();
|
||
const deltas = new Map();
|
||
i = n;
|
||
while (i--) {
|
||
const child_ctx = get_context(ctx, list, i);
|
||
const key = get_key(child_ctx);
|
||
let block = lookup.get(key);
|
||
if (!block) {
|
||
block = create_each_block(key, child_ctx);
|
||
block.c();
|
||
}
|
||
else if (dynamic) {
|
||
block.p(child_ctx, dirty);
|
||
}
|
||
new_lookup.set(key, new_blocks[i] = block);
|
||
if (key in old_indexes)
|
||
deltas.set(key, Math.abs(i - old_indexes[key]));
|
||
}
|
||
const will_move = new Set();
|
||
const did_move = new Set();
|
||
function insert(block) {
|
||
transition_in(block, 1);
|
||
block.m(node, next);
|
||
lookup.set(block.key, block);
|
||
next = block.first;
|
||
n--;
|
||
}
|
||
while (o && n) {
|
||
const new_block = new_blocks[n - 1];
|
||
const old_block = old_blocks[o - 1];
|
||
const new_key = new_block.key;
|
||
const old_key = old_block.key;
|
||
if (new_block === old_block) {
|
||
// do nothing
|
||
next = new_block.first;
|
||
o--;
|
||
n--;
|
||
}
|
||
else if (!new_lookup.has(old_key)) {
|
||
// remove old block
|
||
destroy(old_block, lookup);
|
||
o--;
|
||
}
|
||
else if (!lookup.has(new_key) || will_move.has(new_key)) {
|
||
insert(new_block);
|
||
}
|
||
else if (did_move.has(old_key)) {
|
||
o--;
|
||
}
|
||
else if (deltas.get(new_key) > deltas.get(old_key)) {
|
||
did_move.add(new_key);
|
||
insert(new_block);
|
||
}
|
||
else {
|
||
will_move.add(old_key);
|
||
o--;
|
||
}
|
||
}
|
||
while (o--) {
|
||
const old_block = old_blocks[o];
|
||
if (!new_lookup.has(old_block.key))
|
||
destroy(old_block, lookup);
|
||
}
|
||
while (n)
|
||
insert(new_blocks[n - 1]);
|
||
return new_blocks;
|
||
}
|
||
|
||
function get_spread_update(levels, updates) {
|
||
const update = {};
|
||
const to_null_out = {};
|
||
const accounted_for = { $$scope: 1 };
|
||
let i = levels.length;
|
||
while (i--) {
|
||
const o = levels[i];
|
||
const n = updates[i];
|
||
if (n) {
|
||
for (const key in o) {
|
||
if (!(key in n))
|
||
to_null_out[key] = 1;
|
||
}
|
||
for (const key in n) {
|
||
if (!accounted_for[key]) {
|
||
update[key] = n[key];
|
||
accounted_for[key] = 1;
|
||
}
|
||
}
|
||
levels[i] = n;
|
||
}
|
||
else {
|
||
for (const key in o) {
|
||
accounted_for[key] = 1;
|
||
}
|
||
}
|
||
}
|
||
for (const key in to_null_out) {
|
||
if (!(key in update))
|
||
update[key] = undefined;
|
||
}
|
||
return update;
|
||
}
|
||
function get_spread_object(spread_props) {
|
||
return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
|
||
}
|
||
|
||
function bind(component, name, callback) {
|
||
const index = component.$$.props[name];
|
||
if (index !== undefined) {
|
||
component.$$.bound[index] = callback;
|
||
callback(component.$$.ctx[index]);
|
||
}
|
||
}
|
||
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) {
|
||
// onMount happens before the initial afterUpdate
|
||
add_render_callback(() => {
|
||
const new_on_destroy = on_mount.map(run).filter(is_function);
|
||
if (on_destroy) {
|
||
on_destroy.push(...new_on_destroy);
|
||
}
|
||
else {
|
||
// Edge case - component was destroyed immediately,
|
||
// most likely as a result of a binding initialising
|
||
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);
|
||
// TODO null out other refs, including component.$$ (but need to
|
||
// preserve final state?)
|
||
$$.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, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {
|
||
const parent_component = current_component;
|
||
set_current_component(component);
|
||
const $$ = component.$$ = {
|
||
fragment: null,
|
||
ctx: null,
|
||
// state
|
||
props,
|
||
update: noop,
|
||
not_equal,
|
||
bound: blank_object(),
|
||
// lifecycle
|
||
on_mount: [],
|
||
on_destroy: [],
|
||
on_disconnect: [],
|
||
before_update: [],
|
||
after_update: [],
|
||
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
|
||
// everything else
|
||
callbacks: blank_object(),
|
||
dirty,
|
||
skip_bound: false,
|
||
root: options.target || parent_component.$$.root
|
||
};
|
||
append_styles && append_styles($$.root);
|
||
let ready = false;
|
||
$$.ctx = instance
|
||
? instance(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);
|
||
// `false` as a special case of no DOM component
|
||
$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
|
||
if (options.target) {
|
||
if (options.hydrate) {
|
||
const nodes = children(options.target);
|
||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||
$$.fragment && $$.fragment.l(nodes);
|
||
nodes.forEach(detach);
|
||
}
|
||
else {
|
||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||
$$.fragment && $$.fragment.c();
|
||
}
|
||
if (options.intro)
|
||
transition_in(component.$$.fragment);
|
||
mount_component(component, options.target, options.anchor, options.customElement);
|
||
flush();
|
||
}
|
||
set_current_component(parent_component);
|
||
}
|
||
/**
|
||
* Base class for Svelte components. Used when dev=false.
|
||
*/
|
||
class SvelteComponent {
|
||
$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 collectionUtils = createCommonjsModule(function (module) {
|
||
|
||
var utils = module.exports = {};
|
||
|
||
/**
|
||
* Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.
|
||
* @public
|
||
* @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.
|
||
* @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.
|
||
* @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.
|
||
*/
|
||
utils.forEach = function(collection, callback) {
|
||
for(var i = 0; i < collection.length; i++) {
|
||
var result = callback(collection[i]);
|
||
if(result) {
|
||
return result;
|
||
}
|
||
}
|
||
};
|
||
});
|
||
|
||
var elementUtils = function(options) {
|
||
var getState = options.stateHandler.getState;
|
||
|
||
/**
|
||
* Tells if the element has been made detectable and ready to be listened for resize events.
|
||
* @public
|
||
* @param {element} The element to check.
|
||
* @returns {boolean} True or false depending on if the element is detectable or not.
|
||
*/
|
||
function isDetectable(element) {
|
||
var state = getState(element);
|
||
return state && !!state.isDetectable;
|
||
}
|
||
|
||
/**
|
||
* Marks the element that it has been made detectable and ready to be listened for resize events.
|
||
* @public
|
||
* @param {element} The element to mark.
|
||
*/
|
||
function markAsDetectable(element) {
|
||
getState(element).isDetectable = true;
|
||
}
|
||
|
||
/**
|
||
* Tells if the element is busy or not.
|
||
* @public
|
||
* @param {element} The element to check.
|
||
* @returns {boolean} True or false depending on if the element is busy or not.
|
||
*/
|
||
function isBusy(element) {
|
||
return !!getState(element).busy;
|
||
}
|
||
|
||
/**
|
||
* Marks the object is busy and should not be made detectable.
|
||
* @public
|
||
* @param {element} element The element to mark.
|
||
* @param {boolean} busy If the element is busy or not.
|
||
*/
|
||
function markBusy(element, busy) {
|
||
getState(element).busy = !!busy;
|
||
}
|
||
|
||
return {
|
||
isDetectable: isDetectable,
|
||
markAsDetectable: markAsDetectable,
|
||
isBusy: isBusy,
|
||
markBusy: markBusy
|
||
};
|
||
};
|
||
|
||
var listenerHandler = function(idHandler) {
|
||
var eventListeners = {};
|
||
|
||
/**
|
||
* Gets all listeners for the given element.
|
||
* @public
|
||
* @param {element} element The element to get all listeners for.
|
||
* @returns All listeners for the given element.
|
||
*/
|
||
function getListeners(element) {
|
||
var id = idHandler.get(element);
|
||
|
||
if (id === undefined) {
|
||
return [];
|
||
}
|
||
|
||
return eventListeners[id] || [];
|
||
}
|
||
|
||
/**
|
||
* Stores the given listener for the given element. Will not actually add the listener to the element.
|
||
* @public
|
||
* @param {element} element The element that should have the listener added.
|
||
* @param {function} listener The callback that the element has added.
|
||
*/
|
||
function addListener(element, listener) {
|
||
var id = idHandler.get(element);
|
||
|
||
if(!eventListeners[id]) {
|
||
eventListeners[id] = [];
|
||
}
|
||
|
||
eventListeners[id].push(listener);
|
||
}
|
||
|
||
function removeListener(element, listener) {
|
||
var listeners = getListeners(element);
|
||
for (var i = 0, len = listeners.length; i < len; ++i) {
|
||
if (listeners[i] === listener) {
|
||
listeners.splice(i, 1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
function removeAllListeners(element) {
|
||
var listeners = getListeners(element);
|
||
if (!listeners) { return; }
|
||
listeners.length = 0;
|
||
}
|
||
|
||
return {
|
||
get: getListeners,
|
||
add: addListener,
|
||
removeListener: removeListener,
|
||
removeAllListeners: removeAllListeners
|
||
};
|
||
};
|
||
|
||
var idGenerator = function() {
|
||
var idCount = 1;
|
||
|
||
/**
|
||
* Generates a new unique id in the context.
|
||
* @public
|
||
* @returns {number} A unique id in the context.
|
||
*/
|
||
function generate() {
|
||
return idCount++;
|
||
}
|
||
|
||
return {
|
||
generate: generate
|
||
};
|
||
};
|
||
|
||
var idHandler = function(options) {
|
||
var idGenerator = options.idGenerator;
|
||
var getState = options.stateHandler.getState;
|
||
|
||
/**
|
||
* Gets the resize detector id of the element.
|
||
* @public
|
||
* @param {element} element The target element to get the id of.
|
||
* @returns {string|number|null} The id of the element. Null if it has no id.
|
||
*/
|
||
function getId(element) {
|
||
var state = getState(element);
|
||
|
||
if (state && state.id !== undefined) {
|
||
return state.id;
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|
||
/**
|
||
* Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.
|
||
* @public
|
||
* @param {element} element The target element to set the id of.
|
||
* @returns {string|number|null} The id of the element.
|
||
*/
|
||
function setId(element) {
|
||
var state = getState(element);
|
||
|
||
if (!state) {
|
||
throw new Error("setId required the element to have a resize detection state.");
|
||
}
|
||
|
||
var id = idGenerator.generate();
|
||
|
||
state.id = id;
|
||
|
||
return id;
|
||
}
|
||
|
||
return {
|
||
get: getId,
|
||
set: setId
|
||
};
|
||
};
|
||
|
||
/* global console: false */
|
||
|
||
/**
|
||
* Reporter that handles the reporting of logs, warnings and errors.
|
||
* @public
|
||
* @param {boolean} quiet Tells if the reporter should be quiet or not.
|
||
*/
|
||
var reporter = function(quiet) {
|
||
function noop() {
|
||
//Does nothing.
|
||
}
|
||
|
||
var reporter = {
|
||
log: noop,
|
||
warn: noop,
|
||
error: noop
|
||
};
|
||
|
||
if(!quiet && window.console) {
|
||
var attachFunction = function(reporter, name) {
|
||
//The proxy is needed to be able to call the method with the console context,
|
||
//since we cannot use bind.
|
||
reporter[name] = function reporterProxy() {
|
||
var f = console[name];
|
||
if (f.apply) { //IE9 does not support console.log.apply :)
|
||
f.apply(console, arguments);
|
||
} else {
|
||
for (var i = 0; i < arguments.length; i++) {
|
||
f(arguments[i]);
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
attachFunction(reporter, "log");
|
||
attachFunction(reporter, "warn");
|
||
attachFunction(reporter, "error");
|
||
}
|
||
|
||
return reporter;
|
||
};
|
||
|
||
var browserDetector = createCommonjsModule(function (module) {
|
||
|
||
var detector = module.exports = {};
|
||
|
||
detector.isIE = function(version) {
|
||
function isAnyIeVersion() {
|
||
var agent = navigator.userAgent.toLowerCase();
|
||
return agent.indexOf("msie") !== -1 || agent.indexOf("trident") !== -1 || agent.indexOf(" edge/") !== -1;
|
||
}
|
||
|
||
if(!isAnyIeVersion()) {
|
||
return false;
|
||
}
|
||
|
||
if(!version) {
|
||
return true;
|
||
}
|
||
|
||
//Shamelessly stolen from https://gist.github.com/padolsey/527683
|
||
var ieVersion = (function(){
|
||
var undef,
|
||
v = 3,
|
||
div = document.createElement("div"),
|
||
all = div.getElementsByTagName("i");
|
||
|
||
do {
|
||
div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->";
|
||
}
|
||
while (all[0]);
|
||
|
||
return v > 4 ? v : undef;
|
||
}());
|
||
|
||
return version === ieVersion;
|
||
};
|
||
|
||
detector.isLegacyOpera = function() {
|
||
return !!window.opera;
|
||
};
|
||
});
|
||
|
||
var utils_1 = createCommonjsModule(function (module) {
|
||
|
||
var utils = module.exports = {};
|
||
|
||
utils.getOption = getOption;
|
||
|
||
function getOption(options, name, defaultValue) {
|
||
var value = options[name];
|
||
|
||
if((value === undefined || value === null) && defaultValue !== undefined) {
|
||
return defaultValue;
|
||
}
|
||
|
||
return value;
|
||
}
|
||
});
|
||
|
||
var batchProcessor = function batchProcessorMaker(options) {
|
||
options = options || {};
|
||
var reporter = options.reporter;
|
||
var asyncProcess = utils_1.getOption(options, "async", true);
|
||
var autoProcess = utils_1.getOption(options, "auto", true);
|
||
|
||
if(autoProcess && !asyncProcess) {
|
||
reporter && reporter.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true.");
|
||
asyncProcess = true;
|
||
}
|
||
|
||
var batch = Batch();
|
||
var asyncFrameHandler;
|
||
var isProcessing = false;
|
||
|
||
function addFunction(level, fn) {
|
||
if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {
|
||
// Since this is async, it is guaranteed to be executed after that the fn is added to the batch.
|
||
// This needs to be done before, since we're checking the size of the batch to be 0.
|
||
processBatchAsync();
|
||
}
|
||
|
||
batch.add(level, fn);
|
||
}
|
||
|
||
function processBatch() {
|
||
// Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.
|
||
// Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).
|
||
isProcessing = true;
|
||
while (batch.size()) {
|
||
var processingBatch = batch;
|
||
batch = Batch();
|
||
processingBatch.process();
|
||
}
|
||
isProcessing = false;
|
||
}
|
||
|
||
function forceProcessBatch(localAsyncProcess) {
|
||
if (isProcessing) {
|
||
return;
|
||
}
|
||
|
||
if(localAsyncProcess === undefined) {
|
||
localAsyncProcess = asyncProcess;
|
||
}
|
||
|
||
if(asyncFrameHandler) {
|
||
cancelFrame(asyncFrameHandler);
|
||
asyncFrameHandler = null;
|
||
}
|
||
|
||
if(localAsyncProcess) {
|
||
processBatchAsync();
|
||
} else {
|
||
processBatch();
|
||
}
|
||
}
|
||
|
||
function processBatchAsync() {
|
||
asyncFrameHandler = requestFrame(processBatch);
|
||
}
|
||
|
||
function cancelFrame(listener) {
|
||
// var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
|
||
var cancel = clearTimeout;
|
||
return cancel(listener);
|
||
}
|
||
|
||
function requestFrame(callback) {
|
||
// var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };
|
||
var raf = function(fn) { return setTimeout(fn, 0); };
|
||
return raf(callback);
|
||
}
|
||
|
||
return {
|
||
add: addFunction,
|
||
force: forceProcessBatch
|
||
};
|
||
};
|
||
|
||
function Batch() {
|
||
var batch = {};
|
||
var size = 0;
|
||
var topLevel = 0;
|
||
var bottomLevel = 0;
|
||
|
||
function add(level, fn) {
|
||
if(!fn) {
|
||
fn = level;
|
||
level = 0;
|
||
}
|
||
|
||
if(level > topLevel) {
|
||
topLevel = level;
|
||
} else if(level < bottomLevel) {
|
||
bottomLevel = level;
|
||
}
|
||
|
||
if(!batch[level]) {
|
||
batch[level] = [];
|
||
}
|
||
|
||
batch[level].push(fn);
|
||
size++;
|
||
}
|
||
|
||
function process() {
|
||
for(var level = bottomLevel; level <= topLevel; level++) {
|
||
var fns = batch[level];
|
||
|
||
for(var i = 0; i < fns.length; i++) {
|
||
var fn = fns[i];
|
||
fn();
|
||
}
|
||
}
|
||
}
|
||
|
||
function getSize() {
|
||
return size;
|
||
}
|
||
|
||
return {
|
||
add: add,
|
||
process: process,
|
||
size: getSize
|
||
};
|
||
}
|
||
|
||
var prop = "_erd";
|
||
|
||
function initState(element) {
|
||
element[prop] = {};
|
||
return getState(element);
|
||
}
|
||
|
||
function getState(element) {
|
||
return element[prop];
|
||
}
|
||
|
||
function cleanState(element) {
|
||
delete element[prop];
|
||
}
|
||
|
||
var stateHandler = {
|
||
initState: initState,
|
||
getState: getState,
|
||
cleanState: cleanState
|
||
};
|
||
|
||
/**
|
||
* Resize detection strategy that injects objects to elements in order to detect resize events.
|
||
* Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/
|
||
*/
|
||
|
||
|
||
|
||
var object = function(options) {
|
||
options = options || {};
|
||
var reporter = options.reporter;
|
||
var batchProcessor = options.batchProcessor;
|
||
var getState = options.stateHandler.getState;
|
||
|
||
if(!reporter) {
|
||
throw new Error("Missing required dependency: reporter.");
|
||
}
|
||
|
||
/**
|
||
* Adds a resize event listener to the element.
|
||
* @public
|
||
* @param {element} element The element that should have the listener added.
|
||
* @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
|
||
*/
|
||
function addListener(element, listener) {
|
||
function listenerProxy() {
|
||
listener(element);
|
||
}
|
||
|
||
if(browserDetector.isIE(8)) {
|
||
//IE 8 does not support object, but supports the resize event directly on elements.
|
||
getState(element).object = {
|
||
proxy: listenerProxy
|
||
};
|
||
element.attachEvent("onresize", listenerProxy);
|
||
} else {
|
||
var object = getObject(element);
|
||
|
||
if(!object) {
|
||
throw new Error("Element is not detectable by this strategy.");
|
||
}
|
||
|
||
object.contentDocument.defaultView.addEventListener("resize", listenerProxy);
|
||
}
|
||
}
|
||
|
||
function buildCssTextString(rules) {
|
||
var seperator = options.important ? " !important; " : "; ";
|
||
|
||
return (rules.join(seperator) + seperator).trim();
|
||
}
|
||
|
||
/**
|
||
* Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
|
||
* @private
|
||
* @param {object} options Optional options object.
|
||
* @param {element} element The element to make detectable
|
||
* @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
|
||
*/
|
||
function makeDetectable(options, element, callback) {
|
||
if (!callback) {
|
||
callback = element;
|
||
element = options;
|
||
options = null;
|
||
}
|
||
|
||
options = options || {};
|
||
options.debug;
|
||
|
||
function injectObject(element, callback) {
|
||
var OBJECT_STYLE = buildCssTextString(["display: block", "position: absolute", "top: 0", "left: 0", "width: 100%", "height: 100%", "border: none", "padding: 0", "margin: 0", "opacity: 0", "z-index: -1000", "pointer-events: none"]);
|
||
|
||
//The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.
|
||
|
||
// Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.
|
||
var positionCheckPerformed = false;
|
||
|
||
// The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.
|
||
// Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.
|
||
var style = window.getComputedStyle(element);
|
||
var width = element.offsetWidth;
|
||
var height = element.offsetHeight;
|
||
|
||
getState(element).startSize = {
|
||
width: width,
|
||
height: height
|
||
};
|
||
|
||
function mutateDom() {
|
||
function alterPositionStyles() {
|
||
if(style.position === "static") {
|
||
element.style.setProperty("position", "relative", options.important ? "important" : "");
|
||
|
||
var removeRelativeStyles = function(reporter, element, style, property) {
|
||
function getNumericalValue(value) {
|
||
return value.replace(/[^-\d\.]/g, "");
|
||
}
|
||
|
||
var value = style[property];
|
||
|
||
if(value !== "auto" && getNumericalValue(value) !== "0") {
|
||
reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
|
||
element.style.setProperty(property, "0", options.important ? "important" : "");
|
||
}
|
||
};
|
||
|
||
//Check so that there are no accidental styles that will make the element styled differently now that is is relative.
|
||
//If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
|
||
removeRelativeStyles(reporter, element, style, "top");
|
||
removeRelativeStyles(reporter, element, style, "right");
|
||
removeRelativeStyles(reporter, element, style, "bottom");
|
||
removeRelativeStyles(reporter, element, style, "left");
|
||
}
|
||
}
|
||
|
||
function onObjectLoad() {
|
||
// The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.
|
||
if (!positionCheckPerformed) {
|
||
alterPositionStyles();
|
||
}
|
||
|
||
/*jshint validthis: true */
|
||
|
||
function getDocument(element, callback) {
|
||
//Opera 12 seem to call the object.onload before the actual document has been created.
|
||
//So if it is not present, poll it with an timeout until it is present.
|
||
//TODO: Could maybe be handled better with object.onreadystatechange or similar.
|
||
if(!element.contentDocument) {
|
||
var state = getState(element);
|
||
if (state.checkForObjectDocumentTimeoutId) {
|
||
window.clearTimeout(state.checkForObjectDocumentTimeoutId);
|
||
}
|
||
state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {
|
||
state.checkForObjectDocumentTimeoutId = 0;
|
||
getDocument(element, callback);
|
||
}, 100);
|
||
|
||
return;
|
||
}
|
||
|
||
callback(element.contentDocument);
|
||
}
|
||
|
||
//Mutating the object element here seems to fire another load event.
|
||
//Mutating the inner document of the object element is fine though.
|
||
var objectElement = this;
|
||
|
||
//Create the style element to be added to the object.
|
||
getDocument(objectElement, function onObjectDocumentReady(objectDocument) {
|
||
//Notify that the element is ready to be listened to.
|
||
callback(element);
|
||
});
|
||
}
|
||
|
||
// The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.
|
||
// The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.
|
||
if (style.position !== "") {
|
||
alterPositionStyles();
|
||
positionCheckPerformed = true;
|
||
}
|
||
|
||
//Add an object element as a child to the target element that will be listened to for resize events.
|
||
var object = document.createElement("object");
|
||
object.style.cssText = OBJECT_STYLE;
|
||
object.tabIndex = -1;
|
||
object.type = "text/html";
|
||
object.setAttribute("aria-hidden", "true");
|
||
object.onload = onObjectLoad;
|
||
|
||
//Safari: This must occur before adding the object to the DOM.
|
||
//IE: Does not like that this happens before, even if it is also added after.
|
||
if(!browserDetector.isIE()) {
|
||
object.data = "about:blank";
|
||
}
|
||
|
||
if (!getState(element)) {
|
||
// The element has been uninstalled before the actual loading happened.
|
||
return;
|
||
}
|
||
|
||
element.appendChild(object);
|
||
getState(element).object = object;
|
||
|
||
//IE: This must occur after adding the object to the DOM.
|
||
if(browserDetector.isIE()) {
|
||
object.data = "about:blank";
|
||
}
|
||
}
|
||
|
||
if(batchProcessor) {
|
||
batchProcessor.add(mutateDom);
|
||
} else {
|
||
mutateDom();
|
||
}
|
||
}
|
||
|
||
if(browserDetector.isIE(8)) {
|
||
//IE 8 does not support objects properly. Luckily they do support the resize event.
|
||
//So do not inject the object and notify that the element is already ready to be listened to.
|
||
//The event handler for the resize event is attached in the utils.addListener instead.
|
||
callback(element);
|
||
} else {
|
||
injectObject(element, callback);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Returns the child object of the target element.
|
||
* @private
|
||
* @param {element} element The target element.
|
||
* @returns The object element of the target.
|
||
*/
|
||
function getObject(element) {
|
||
return getState(element).object;
|
||
}
|
||
|
||
function uninstall(element) {
|
||
if (!getState(element)) {
|
||
return;
|
||
}
|
||
|
||
var object = getObject(element);
|
||
|
||
if (!object) {
|
||
return;
|
||
}
|
||
|
||
if (browserDetector.isIE(8)) {
|
||
element.detachEvent("onresize", object.proxy);
|
||
} else {
|
||
element.removeChild(object);
|
||
}
|
||
|
||
if (getState(element).checkForObjectDocumentTimeoutId) {
|
||
window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);
|
||
}
|
||
|
||
delete getState(element).object;
|
||
}
|
||
|
||
return {
|
||
makeDetectable: makeDetectable,
|
||
addListener: addListener,
|
||
uninstall: uninstall
|
||
};
|
||
};
|
||
|
||
/**
|
||
* Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.
|
||
* Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js
|
||
*/
|
||
|
||
var forEach$1 = collectionUtils.forEach;
|
||
|
||
var scroll = function(options) {
|
||
options = options || {};
|
||
var reporter = options.reporter;
|
||
var batchProcessor = options.batchProcessor;
|
||
var getState = options.stateHandler.getState;
|
||
options.stateHandler.hasState;
|
||
var idHandler = options.idHandler;
|
||
|
||
if (!batchProcessor) {
|
||
throw new Error("Missing required dependency: batchProcessor");
|
||
}
|
||
|
||
if (!reporter) {
|
||
throw new Error("Missing required dependency: reporter.");
|
||
}
|
||
|
||
//TODO: Could this perhaps be done at installation time?
|
||
var scrollbarSizes = getScrollbarSizes();
|
||
|
||
var styleId = "erd_scroll_detection_scrollbar_style";
|
||
var detectionContainerClass = "erd_scroll_detection_container";
|
||
|
||
function initDocument(targetDocument) {
|
||
// Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.
|
||
// The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).
|
||
injectScrollStyle(targetDocument, styleId, detectionContainerClass);
|
||
}
|
||
|
||
initDocument(window.document);
|
||
|
||
function buildCssTextString(rules) {
|
||
var seperator = options.important ? " !important; " : "; ";
|
||
|
||
return (rules.join(seperator) + seperator).trim();
|
||
}
|
||
|
||
function getScrollbarSizes() {
|
||
var width = 500;
|
||
var height = 500;
|
||
|
||
var child = document.createElement("div");
|
||
child.style.cssText = buildCssTextString(["position: absolute", "width: " + width*2 + "px", "height: " + height*2 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
|
||
|
||
var container = document.createElement("div");
|
||
container.style.cssText = buildCssTextString(["position: absolute", "width: " + width + "px", "height: " + height + "px", "overflow: scroll", "visibility: none", "top: " + -width*3 + "px", "left: " + -height*3 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
|
||
|
||
container.appendChild(child);
|
||
|
||
document.body.insertBefore(container, document.body.firstChild);
|
||
|
||
var widthSize = width - container.clientWidth;
|
||
var heightSize = height - container.clientHeight;
|
||
|
||
document.body.removeChild(container);
|
||
|
||
return {
|
||
width: widthSize,
|
||
height: heightSize
|
||
};
|
||
}
|
||
|
||
function injectScrollStyle(targetDocument, styleId, containerClass) {
|
||
function injectStyle(style, method) {
|
||
method = method || function (element) {
|
||
targetDocument.head.appendChild(element);
|
||
};
|
||
|
||
var styleElement = targetDocument.createElement("style");
|
||
styleElement.innerHTML = style;
|
||
styleElement.id = styleId;
|
||
method(styleElement);
|
||
return styleElement;
|
||
}
|
||
|
||
if (!targetDocument.getElementById(styleId)) {
|
||
var containerAnimationClass = containerClass + "_animation";
|
||
var containerAnimationActiveClass = containerClass + "_animation_active";
|
||
var style = "/* Created by the element-resize-detector library. */\n";
|
||
style += "." + containerClass + " > div::-webkit-scrollbar { " + buildCssTextString(["display: none"]) + " }\n\n";
|
||
style += "." + containerAnimationActiveClass + " { " + buildCssTextString(["-webkit-animation-duration: 0.1s", "animation-duration: 0.1s", "-webkit-animation-name: " + containerAnimationClass, "animation-name: " + containerAnimationClass]) + " }\n";
|
||
style += "@-webkit-keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n";
|
||
style += "@keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }";
|
||
injectStyle(style);
|
||
}
|
||
}
|
||
|
||
function addAnimationClass(element) {
|
||
element.className += " " + detectionContainerClass + "_animation_active";
|
||
}
|
||
|
||
function addEvent(el, name, cb) {
|
||
if (el.addEventListener) {
|
||
el.addEventListener(name, cb);
|
||
} else if(el.attachEvent) {
|
||
el.attachEvent("on" + name, cb);
|
||
} else {
|
||
return reporter.error("[scroll] Don't know how to add event listeners.");
|
||
}
|
||
}
|
||
|
||
function removeEvent(el, name, cb) {
|
||
if (el.removeEventListener) {
|
||
el.removeEventListener(name, cb);
|
||
} else if(el.detachEvent) {
|
||
el.detachEvent("on" + name, cb);
|
||
} else {
|
||
return reporter.error("[scroll] Don't know how to remove event listeners.");
|
||
}
|
||
}
|
||
|
||
function getExpandElement(element) {
|
||
return getState(element).container.childNodes[0].childNodes[0].childNodes[0];
|
||
}
|
||
|
||
function getShrinkElement(element) {
|
||
return getState(element).container.childNodes[0].childNodes[0].childNodes[1];
|
||
}
|
||
|
||
/**
|
||
* Adds a resize event listener to the element.
|
||
* @public
|
||
* @param {element} element The element that should have the listener added.
|
||
* @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
|
||
*/
|
||
function addListener(element, listener) {
|
||
var listeners = getState(element).listeners;
|
||
|
||
if (!listeners.push) {
|
||
throw new Error("Cannot add listener to an element that is not detectable.");
|
||
}
|
||
|
||
getState(element).listeners.push(listener);
|
||
}
|
||
|
||
/**
|
||
* Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
|
||
* @private
|
||
* @param {object} options Optional options object.
|
||
* @param {element} element The element to make detectable
|
||
* @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
|
||
*/
|
||
function makeDetectable(options, element, callback) {
|
||
if (!callback) {
|
||
callback = element;
|
||
element = options;
|
||
options = null;
|
||
}
|
||
|
||
options = options || {};
|
||
|
||
function debug() {
|
||
if (options.debug) {
|
||
var args = Array.prototype.slice.call(arguments);
|
||
args.unshift(idHandler.get(element), "Scroll: ");
|
||
if (reporter.log.apply) {
|
||
reporter.log.apply(null, args);
|
||
} else {
|
||
for (var i = 0; i < args.length; i++) {
|
||
reporter.log(args[i]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function isDetached(element) {
|
||
function isInDocument(element) {
|
||
var isInShadowRoot = element.getRootNode && element.getRootNode().contains(element);
|
||
return element === element.ownerDocument.body || element.ownerDocument.body.contains(element) || isInShadowRoot;
|
||
}
|
||
|
||
if (!isInDocument(element)) {
|
||
return true;
|
||
}
|
||
|
||
// FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520
|
||
if (window.getComputedStyle(element) === null) {
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
function isUnrendered(element) {
|
||
// Check the absolute positioned container since the top level container is display: inline.
|
||
var container = getState(element).container.childNodes[0];
|
||
var style = window.getComputedStyle(container);
|
||
return !style.width || style.width.indexOf("px") === -1; //Can only compute pixel value when rendered.
|
||
}
|
||
|
||
function getStyle() {
|
||
// Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,
|
||
// so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).
|
||
var elementStyle = window.getComputedStyle(element);
|
||
var style = {};
|
||
style.position = elementStyle.position;
|
||
style.width = element.offsetWidth;
|
||
style.height = element.offsetHeight;
|
||
style.top = elementStyle.top;
|
||
style.right = elementStyle.right;
|
||
style.bottom = elementStyle.bottom;
|
||
style.left = elementStyle.left;
|
||
style.widthCSS = elementStyle.width;
|
||
style.heightCSS = elementStyle.height;
|
||
return style;
|
||
}
|
||
|
||
function storeStartSize() {
|
||
var style = getStyle();
|
||
getState(element).startSize = {
|
||
width: style.width,
|
||
height: style.height
|
||
};
|
||
debug("Element start size", getState(element).startSize);
|
||
}
|
||
|
||
function initListeners() {
|
||
getState(element).listeners = [];
|
||
}
|
||
|
||
function storeStyle() {
|
||
debug("storeStyle invoked.");
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
var style = getStyle();
|
||
getState(element).style = style;
|
||
}
|
||
|
||
function storeCurrentSize(element, width, height) {
|
||
getState(element).lastWidth = width;
|
||
getState(element).lastHeight = height;
|
||
}
|
||
|
||
function getExpandChildElement(element) {
|
||
return getExpandElement(element).childNodes[0];
|
||
}
|
||
|
||
function getWidthOffset() {
|
||
return 2 * scrollbarSizes.width + 1;
|
||
}
|
||
|
||
function getHeightOffset() {
|
||
return 2 * scrollbarSizes.height + 1;
|
||
}
|
||
|
||
function getExpandWidth(width) {
|
||
return width + 10 + getWidthOffset();
|
||
}
|
||
|
||
function getExpandHeight(height) {
|
||
return height + 10 + getHeightOffset();
|
||
}
|
||
|
||
function getShrinkWidth(width) {
|
||
return width * 2 + getWidthOffset();
|
||
}
|
||
|
||
function getShrinkHeight(height) {
|
||
return height * 2 + getHeightOffset();
|
||
}
|
||
|
||
function positionScrollbars(element, width, height) {
|
||
var expand = getExpandElement(element);
|
||
var shrink = getShrinkElement(element);
|
||
var expandWidth = getExpandWidth(width);
|
||
var expandHeight = getExpandHeight(height);
|
||
var shrinkWidth = getShrinkWidth(width);
|
||
var shrinkHeight = getShrinkHeight(height);
|
||
expand.scrollLeft = expandWidth;
|
||
expand.scrollTop = expandHeight;
|
||
shrink.scrollLeft = shrinkWidth;
|
||
shrink.scrollTop = shrinkHeight;
|
||
}
|
||
|
||
function injectContainerElement() {
|
||
var container = getState(element).container;
|
||
|
||
if (!container) {
|
||
container = document.createElement("div");
|
||
container.className = detectionContainerClass;
|
||
container.style.cssText = buildCssTextString(["visibility: hidden", "display: inline", "width: 0px", "height: 0px", "z-index: -1", "overflow: hidden", "margin: 0", "padding: 0"]);
|
||
getState(element).container = container;
|
||
addAnimationClass(container);
|
||
element.appendChild(container);
|
||
|
||
var onAnimationStart = function () {
|
||
getState(element).onRendered && getState(element).onRendered();
|
||
};
|
||
|
||
addEvent(container, "animationstart", onAnimationStart);
|
||
|
||
// Store the event handler here so that they may be removed when uninstall is called.
|
||
// See uninstall function for an explanation why it is needed.
|
||
getState(element).onAnimationStart = onAnimationStart;
|
||
}
|
||
|
||
return container;
|
||
}
|
||
|
||
function injectScrollElements() {
|
||
function alterPositionStyles() {
|
||
var style = getState(element).style;
|
||
|
||
if(style.position === "static") {
|
||
element.style.setProperty("position", "relative",options.important ? "important" : "");
|
||
|
||
var removeRelativeStyles = function(reporter, element, style, property) {
|
||
function getNumericalValue(value) {
|
||
return value.replace(/[^-\d\.]/g, "");
|
||
}
|
||
|
||
var value = style[property];
|
||
|
||
if(value !== "auto" && getNumericalValue(value) !== "0") {
|
||
reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
|
||
element.style[property] = 0;
|
||
}
|
||
};
|
||
|
||
//Check so that there are no accidental styles that will make the element styled differently now that is is relative.
|
||
//If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
|
||
removeRelativeStyles(reporter, element, style, "top");
|
||
removeRelativeStyles(reporter, element, style, "right");
|
||
removeRelativeStyles(reporter, element, style, "bottom");
|
||
removeRelativeStyles(reporter, element, style, "left");
|
||
}
|
||
}
|
||
|
||
function getLeftTopBottomRightCssText(left, top, bottom, right) {
|
||
left = (!left ? "0" : (left + "px"));
|
||
top = (!top ? "0" : (top + "px"));
|
||
bottom = (!bottom ? "0" : (bottom + "px"));
|
||
right = (!right ? "0" : (right + "px"));
|
||
|
||
return ["left: " + left, "top: " + top, "right: " + right, "bottom: " + bottom];
|
||
}
|
||
|
||
debug("Injecting elements");
|
||
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
alterPositionStyles();
|
||
|
||
var rootContainer = getState(element).container;
|
||
|
||
if (!rootContainer) {
|
||
rootContainer = injectContainerElement();
|
||
}
|
||
|
||
// Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),
|
||
// we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than
|
||
// the targeted element.
|
||
// When the bug is resolved, "containerContainer" may be removed.
|
||
|
||
// The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).
|
||
// This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.
|
||
|
||
var scrollbarWidth = scrollbarSizes.width;
|
||
var scrollbarHeight = scrollbarSizes.height;
|
||
var containerContainerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%", "left: 0px", "top: 0px"]);
|
||
var containerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));
|
||
var expandStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
|
||
var shrinkStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
|
||
var expandChildStyle = buildCssTextString(["position: absolute", "left: 0", "top: 0"]);
|
||
var shrinkChildStyle = buildCssTextString(["position: absolute", "width: 200%", "height: 200%"]);
|
||
|
||
var containerContainer = document.createElement("div");
|
||
var container = document.createElement("div");
|
||
var expand = document.createElement("div");
|
||
var expandChild = document.createElement("div");
|
||
var shrink = document.createElement("div");
|
||
var shrinkChild = document.createElement("div");
|
||
|
||
// Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56
|
||
// However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.
|
||
containerContainer.dir = "ltr";
|
||
|
||
containerContainer.style.cssText = containerContainerStyle;
|
||
containerContainer.className = detectionContainerClass;
|
||
container.className = detectionContainerClass;
|
||
container.style.cssText = containerStyle;
|
||
expand.style.cssText = expandStyle;
|
||
expandChild.style.cssText = expandChildStyle;
|
||
shrink.style.cssText = shrinkStyle;
|
||
shrinkChild.style.cssText = shrinkChildStyle;
|
||
|
||
expand.appendChild(expandChild);
|
||
shrink.appendChild(shrinkChild);
|
||
container.appendChild(expand);
|
||
container.appendChild(shrink);
|
||
containerContainer.appendChild(container);
|
||
rootContainer.appendChild(containerContainer);
|
||
|
||
function onExpandScroll() {
|
||
var state = getState(element);
|
||
if (state && state.onExpand) {
|
||
state.onExpand();
|
||
} else {
|
||
debug("Aborting expand scroll handler: element has been uninstalled");
|
||
}
|
||
}
|
||
|
||
function onShrinkScroll() {
|
||
var state = getState(element);
|
||
if (state && state.onShrink) {
|
||
state.onShrink();
|
||
} else {
|
||
debug("Aborting shrink scroll handler: element has been uninstalled");
|
||
}
|
||
}
|
||
|
||
addEvent(expand, "scroll", onExpandScroll);
|
||
addEvent(shrink, "scroll", onShrinkScroll);
|
||
|
||
// Store the event handlers here so that they may be removed when uninstall is called.
|
||
// See uninstall function for an explanation why it is needed.
|
||
getState(element).onExpandScroll = onExpandScroll;
|
||
getState(element).onShrinkScroll = onShrinkScroll;
|
||
}
|
||
|
||
function registerListenersAndPositionElements() {
|
||
function updateChildSizes(element, width, height) {
|
||
var expandChild = getExpandChildElement(element);
|
||
var expandWidth = getExpandWidth(width);
|
||
var expandHeight = getExpandHeight(height);
|
||
expandChild.style.setProperty("width", expandWidth + "px", options.important ? "important" : "");
|
||
expandChild.style.setProperty("height", expandHeight + "px", options.important ? "important" : "");
|
||
}
|
||
|
||
function updateDetectorElements(done) {
|
||
var width = element.offsetWidth;
|
||
var height = element.offsetHeight;
|
||
|
||
// Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.
|
||
var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;
|
||
|
||
debug("Storing current size", width, height);
|
||
|
||
// Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.
|
||
// Otherwise the if-check in handleScroll is useless.
|
||
storeCurrentSize(element, width, height);
|
||
|
||
// Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.
|
||
// Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.
|
||
|
||
batchProcessor.add(0, function performUpdateChildSizes() {
|
||
if (!sizeChanged) {
|
||
return;
|
||
}
|
||
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
if (!areElementsInjected()) {
|
||
debug("Aborting because element container has not been initialized");
|
||
return;
|
||
}
|
||
|
||
if (options.debug) {
|
||
var w = element.offsetWidth;
|
||
var h = element.offsetHeight;
|
||
|
||
if (w !== width || h !== height) {
|
||
reporter.warn(idHandler.get(element), "Scroll: Size changed before updating detector elements.");
|
||
}
|
||
}
|
||
|
||
updateChildSizes(element, width, height);
|
||
});
|
||
|
||
batchProcessor.add(1, function updateScrollbars() {
|
||
// This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then
|
||
// been restored to the original size, which will have changed the scrollbar positions.
|
||
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
if (!areElementsInjected()) {
|
||
debug("Aborting because element container has not been initialized");
|
||
return;
|
||
}
|
||
|
||
positionScrollbars(element, width, height);
|
||
});
|
||
|
||
if (sizeChanged && done) {
|
||
batchProcessor.add(2, function () {
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
if (!areElementsInjected()) {
|
||
debug("Aborting because element container has not been initialized");
|
||
return;
|
||
}
|
||
|
||
done();
|
||
});
|
||
}
|
||
}
|
||
|
||
function areElementsInjected() {
|
||
return !!getState(element).container;
|
||
}
|
||
|
||
function notifyListenersIfNeeded() {
|
||
function isFirstNotify() {
|
||
return getState(element).lastNotifiedWidth === undefined;
|
||
}
|
||
|
||
debug("notifyListenersIfNeeded invoked");
|
||
|
||
var state = getState(element);
|
||
|
||
// Don't notify if the current size is the start size, and this is the first notification.
|
||
if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {
|
||
return debug("Not notifying: Size is the same as the start size, and there has been no notification yet.");
|
||
}
|
||
|
||
// Don't notify if the size already has been notified.
|
||
if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {
|
||
return debug("Not notifying: Size already notified");
|
||
}
|
||
|
||
|
||
debug("Current size not notified, notifying...");
|
||
state.lastNotifiedWidth = state.lastWidth;
|
||
state.lastNotifiedHeight = state.lastHeight;
|
||
forEach$1(getState(element).listeners, function (listener) {
|
||
listener(element);
|
||
});
|
||
}
|
||
|
||
function handleRender() {
|
||
debug("startanimation triggered.");
|
||
|
||
if (isUnrendered(element)) {
|
||
debug("Ignoring since element is still unrendered...");
|
||
return;
|
||
}
|
||
|
||
debug("Element rendered.");
|
||
var expand = getExpandElement(element);
|
||
var shrink = getShrinkElement(element);
|
||
if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {
|
||
debug("Scrollbars out of sync. Updating detector elements...");
|
||
updateDetectorElements(notifyListenersIfNeeded);
|
||
}
|
||
}
|
||
|
||
function handleScroll() {
|
||
debug("Scroll detected.");
|
||
|
||
if (isUnrendered(element)) {
|
||
// Element is still unrendered. Skip this scroll event.
|
||
debug("Scroll event fired while unrendered. Ignoring...");
|
||
return;
|
||
}
|
||
|
||
updateDetectorElements(notifyListenersIfNeeded);
|
||
}
|
||
|
||
debug("registerListenersAndPositionElements invoked.");
|
||
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
getState(element).onRendered = handleRender;
|
||
getState(element).onExpand = handleScroll;
|
||
getState(element).onShrink = handleScroll;
|
||
|
||
var style = getState(element).style;
|
||
updateChildSizes(element, style.width, style.height);
|
||
}
|
||
|
||
function finalizeDomMutation() {
|
||
debug("finalizeDomMutation invoked.");
|
||
|
||
if (!getState(element)) {
|
||
debug("Aborting because element has been uninstalled");
|
||
return;
|
||
}
|
||
|
||
var style = getState(element).style;
|
||
storeCurrentSize(element, style.width, style.height);
|
||
positionScrollbars(element, style.width, style.height);
|
||
}
|
||
|
||
function ready() {
|
||
callback(element);
|
||
}
|
||
|
||
function install() {
|
||
debug("Installing...");
|
||
initListeners();
|
||
storeStartSize();
|
||
|
||
batchProcessor.add(0, storeStyle);
|
||
batchProcessor.add(1, injectScrollElements);
|
||
batchProcessor.add(2, registerListenersAndPositionElements);
|
||
batchProcessor.add(3, finalizeDomMutation);
|
||
batchProcessor.add(4, ready);
|
||
}
|
||
|
||
debug("Making detectable...");
|
||
|
||
if (isDetached(element)) {
|
||
debug("Element is detached");
|
||
|
||
injectContainerElement();
|
||
|
||
debug("Waiting until element is attached...");
|
||
|
||
getState(element).onRendered = function () {
|
||
debug("Element is now attached");
|
||
install();
|
||
};
|
||
} else {
|
||
install();
|
||
}
|
||
}
|
||
|
||
function uninstall(element) {
|
||
var state = getState(element);
|
||
|
||
if (!state) {
|
||
// Uninstall has been called on a non-erd element.
|
||
return;
|
||
}
|
||
|
||
// Uninstall may have been called in the following scenarios:
|
||
// (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).
|
||
// (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).
|
||
// (3) After the installation process (here, state.busy = false and all the stuff has been injected).
|
||
// So to be on the safe side, let's check for each thing before removing.
|
||
|
||
// We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.
|
||
state.onExpandScroll && removeEvent(getExpandElement(element), "scroll", state.onExpandScroll);
|
||
state.onShrinkScroll && removeEvent(getShrinkElement(element), "scroll", state.onShrinkScroll);
|
||
state.onAnimationStart && removeEvent(state.container, "animationstart", state.onAnimationStart);
|
||
|
||
state.container && element.removeChild(state.container);
|
||
}
|
||
|
||
return {
|
||
makeDetectable: makeDetectable,
|
||
addListener: addListener,
|
||
uninstall: uninstall,
|
||
initDocument: initDocument
|
||
};
|
||
};
|
||
|
||
var forEach = collectionUtils.forEach;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//Detection strategies.
|
||
|
||
|
||
|
||
function isCollection(obj) {
|
||
return Array.isArray(obj) || obj.length !== undefined;
|
||
}
|
||
|
||
function toArray(collection) {
|
||
if (!Array.isArray(collection)) {
|
||
var array = [];
|
||
forEach(collection, function (obj) {
|
||
array.push(obj);
|
||
});
|
||
return array;
|
||
} else {
|
||
return collection;
|
||
}
|
||
}
|
||
|
||
function isElement(obj) {
|
||
return obj && obj.nodeType === 1;
|
||
}
|
||
|
||
/**
|
||
* @typedef idHandler
|
||
* @type {object}
|
||
* @property {function} get Gets the resize detector id of the element.
|
||
* @property {function} set Generate and sets the resize detector id of the element.
|
||
*/
|
||
|
||
/**
|
||
* @typedef Options
|
||
* @type {object}
|
||
* @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.
|
||
Default is true. If true, the listener is guaranteed to be called when it has been added.
|
||
If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).
|
||
* @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.
|
||
If not provided, a default id handler will be used.
|
||
* @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.
|
||
If not provided, a default id handler will be used.
|
||
If set to false, then nothing will be reported.
|
||
* @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.
|
||
*/
|
||
|
||
/**
|
||
* Creates an element resize detector instance.
|
||
* @public
|
||
* @param {Options?} options Optional global options object that will decide how this instance will work.
|
||
*/
|
||
var elementResizeDetector = function(options) {
|
||
options = options || {};
|
||
|
||
//idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.
|
||
var idHandler$1;
|
||
|
||
if (options.idHandler) {
|
||
// To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler
|
||
// so that readonly flag always is true when it's used here. This may be removed next major version bump.
|
||
idHandler$1 = {
|
||
get: function (element) { return options.idHandler.get(element, true); },
|
||
set: options.idHandler.set
|
||
};
|
||
} else {
|
||
var idGenerator$1 = idGenerator();
|
||
var defaultIdHandler = idHandler({
|
||
idGenerator: idGenerator$1,
|
||
stateHandler: stateHandler
|
||
});
|
||
idHandler$1 = defaultIdHandler;
|
||
}
|
||
|
||
//reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.
|
||
var reporter$1 = options.reporter;
|
||
|
||
if(!reporter$1) {
|
||
//If options.reporter is false, then the reporter should be quiet.
|
||
var quiet = reporter$1 === false;
|
||
reporter$1 = reporter(quiet);
|
||
}
|
||
|
||
//batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.
|
||
var batchProcessor$1 = getOption(options, "batchProcessor", batchProcessor({ reporter: reporter$1 }));
|
||
|
||
//Options to be used as default for the listenTo function.
|
||
var globalOptions = {};
|
||
globalOptions.callOnAdd = !!getOption(options, "callOnAdd", true);
|
||
globalOptions.debug = !!getOption(options, "debug", false);
|
||
|
||
var eventListenerHandler = listenerHandler(idHandler$1);
|
||
var elementUtils$1 = elementUtils({
|
||
stateHandler: stateHandler
|
||
});
|
||
|
||
//The detection strategy to be used.
|
||
var detectionStrategy;
|
||
var desiredStrategy = getOption(options, "strategy", "object");
|
||
var importantCssRules = getOption(options, "important", false);
|
||
var strategyOptions = {
|
||
reporter: reporter$1,
|
||
batchProcessor: batchProcessor$1,
|
||
stateHandler: stateHandler,
|
||
idHandler: idHandler$1,
|
||
important: importantCssRules
|
||
};
|
||
|
||
if(desiredStrategy === "scroll") {
|
||
if (browserDetector.isLegacyOpera()) {
|
||
reporter$1.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy.");
|
||
desiredStrategy = "object";
|
||
} else if (browserDetector.isIE(9)) {
|
||
reporter$1.warn("Scroll strategy is not supported on IE9. Changing to object strategy.");
|
||
desiredStrategy = "object";
|
||
}
|
||
}
|
||
|
||
if(desiredStrategy === "scroll") {
|
||
detectionStrategy = scroll(strategyOptions);
|
||
} else if(desiredStrategy === "object") {
|
||
detectionStrategy = object(strategyOptions);
|
||
} else {
|
||
throw new Error("Invalid strategy name: " + desiredStrategy);
|
||
}
|
||
|
||
//Calls can be made to listenTo with elements that are still being installed.
|
||
//Also, same elements can occur in the elements list in the listenTo function.
|
||
//With this map, the ready callbacks can be synchronized between the calls
|
||
//so that the ready callback can always be called when an element is ready - even if
|
||
//it wasn't installed from the function itself.
|
||
var onReadyCallbacks = {};
|
||
|
||
/**
|
||
* Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.
|
||
* @public
|
||
* @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.
|
||
* @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.
|
||
* @param {function} listener The callback to be executed for each resize event for each element.
|
||
*/
|
||
function listenTo(options, elements, listener) {
|
||
function onResizeCallback(element) {
|
||
var listeners = eventListenerHandler.get(element);
|
||
forEach(listeners, function callListenerProxy(listener) {
|
||
listener(element);
|
||
});
|
||
}
|
||
|
||
function addListener(callOnAdd, element, listener) {
|
||
eventListenerHandler.add(element, listener);
|
||
|
||
if(callOnAdd) {
|
||
listener(element);
|
||
}
|
||
}
|
||
|
||
//Options object may be omitted.
|
||
if(!listener) {
|
||
listener = elements;
|
||
elements = options;
|
||
options = {};
|
||
}
|
||
|
||
if(!elements) {
|
||
throw new Error("At least one element required.");
|
||
}
|
||
|
||
if(!listener) {
|
||
throw new Error("Listener required.");
|
||
}
|
||
|
||
if (isElement(elements)) {
|
||
// A single element has been passed in.
|
||
elements = [elements];
|
||
} else if (isCollection(elements)) {
|
||
// Convert collection to array for plugins.
|
||
// TODO: May want to check so that all the elements in the collection are valid elements.
|
||
elements = toArray(elements);
|
||
} else {
|
||
return reporter$1.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
|
||
}
|
||
|
||
var elementsReady = 0;
|
||
|
||
var callOnAdd = getOption(options, "callOnAdd", globalOptions.callOnAdd);
|
||
var onReadyCallback = getOption(options, "onReady", function noop() {});
|
||
var debug = getOption(options, "debug", globalOptions.debug);
|
||
|
||
forEach(elements, function attachListenerToElement(element) {
|
||
if (!stateHandler.getState(element)) {
|
||
stateHandler.initState(element);
|
||
idHandler$1.set(element);
|
||
}
|
||
|
||
var id = idHandler$1.get(element);
|
||
|
||
debug && reporter$1.log("Attaching listener to element", id, element);
|
||
|
||
if(!elementUtils$1.isDetectable(element)) {
|
||
debug && reporter$1.log(id, "Not detectable.");
|
||
if(elementUtils$1.isBusy(element)) {
|
||
debug && reporter$1.log(id, "System busy making it detectable");
|
||
|
||
//The element is being prepared to be detectable. Do not make it detectable.
|
||
//Just add the listener, because the element will soon be detectable.
|
||
addListener(callOnAdd, element, listener);
|
||
onReadyCallbacks[id] = onReadyCallbacks[id] || [];
|
||
onReadyCallbacks[id].push(function onReady() {
|
||
elementsReady++;
|
||
|
||
if(elementsReady === elements.length) {
|
||
onReadyCallback();
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
|
||
debug && reporter$1.log(id, "Making detectable...");
|
||
//The element is not prepared to be detectable, so do prepare it and add a listener to it.
|
||
elementUtils$1.markBusy(element, true);
|
||
return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {
|
||
debug && reporter$1.log(id, "onElementDetectable");
|
||
|
||
if (stateHandler.getState(element)) {
|
||
elementUtils$1.markAsDetectable(element);
|
||
elementUtils$1.markBusy(element, false);
|
||
detectionStrategy.addListener(element, onResizeCallback);
|
||
addListener(callOnAdd, element, listener);
|
||
|
||
// Since the element size might have changed since the call to "listenTo", we need to check for this change,
|
||
// so that a resize event may be emitted.
|
||
// Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.
|
||
// Also, check the state existance before since the element may have been uninstalled in the installation process.
|
||
var state = stateHandler.getState(element);
|
||
if (state && state.startSize) {
|
||
var width = element.offsetWidth;
|
||
var height = element.offsetHeight;
|
||
if (state.startSize.width !== width || state.startSize.height !== height) {
|
||
onResizeCallback(element);
|
||
}
|
||
}
|
||
|
||
if(onReadyCallbacks[id]) {
|
||
forEach(onReadyCallbacks[id], function(callback) {
|
||
callback();
|
||
});
|
||
}
|
||
} else {
|
||
// The element has been unisntalled before being detectable.
|
||
debug && reporter$1.log(id, "Element uninstalled before being detectable.");
|
||
}
|
||
|
||
delete onReadyCallbacks[id];
|
||
|
||
elementsReady++;
|
||
if(elementsReady === elements.length) {
|
||
onReadyCallback();
|
||
}
|
||
});
|
||
}
|
||
|
||
debug && reporter$1.log(id, "Already detecable, adding listener.");
|
||
|
||
//The element has been prepared to be detectable and is ready to be listened to.
|
||
addListener(callOnAdd, element, listener);
|
||
elementsReady++;
|
||
});
|
||
|
||
if(elementsReady === elements.length) {
|
||
onReadyCallback();
|
||
}
|
||
}
|
||
|
||
function uninstall(elements) {
|
||
if(!elements) {
|
||
return reporter$1.error("At least one element is required.");
|
||
}
|
||
|
||
if (isElement(elements)) {
|
||
// A single element has been passed in.
|
||
elements = [elements];
|
||
} else if (isCollection(elements)) {
|
||
// Convert collection to array for plugins.
|
||
// TODO: May want to check so that all the elements in the collection are valid elements.
|
||
elements = toArray(elements);
|
||
} else {
|
||
return reporter$1.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
|
||
}
|
||
|
||
forEach(elements, function (element) {
|
||
eventListenerHandler.removeAllListeners(element);
|
||
detectionStrategy.uninstall(element);
|
||
stateHandler.cleanState(element);
|
||
});
|
||
}
|
||
|
||
function initDocument(targetDocument) {
|
||
detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);
|
||
}
|
||
|
||
return {
|
||
listenTo: listenTo,
|
||
removeListener: eventListenerHandler.removeListener,
|
||
removeAllListeners: eventListenerHandler.removeAllListeners,
|
||
uninstall: uninstall,
|
||
initDocument: initDocument
|
||
};
|
||
};
|
||
|
||
function getOption(options, name, defaultValue) {
|
||
var value = options[name];
|
||
|
||
if((value === undefined || value === null) && defaultValue !== undefined) {
|
||
return defaultValue;
|
||
}
|
||
|
||
return value;
|
||
}
|
||
|
||
var erd = elementResizeDetector({ strategy: "scroll" });
|
||
function watchResize(element, handler) {
|
||
erd.listenTo(element, handler);
|
||
var currentHandler = handler;
|
||
return {
|
||
update: function (newHandler) {
|
||
erd.removeListener(element, currentHandler);
|
||
erd.listenTo(element, newHandler);
|
||
currentHandler = newHandler;
|
||
},
|
||
destroy: function () {
|
||
erd.removeListener(element, currentHandler);
|
||
},
|
||
};
|
||
}
|
||
|
||
const subscriber_queue = [];
|
||
/**
|
||
* Create a `Writable` store that allows both updating and reading by subscription.
|
||
* @param {*=}value initial value
|
||
* @param {StartStopNotifier=}start start and stop notifications for subscriptions
|
||
*/
|
||
function writable(value, start = noop) {
|
||
let stop;
|
||
const subscribers = new Set();
|
||
function set(new_value) {
|
||
if (safe_not_equal(value, new_value)) {
|
||
value = new_value;
|
||
if (stop) { // store is ready
|
||
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 update(fn) {
|
||
set(fn(value));
|
||
}
|
||
function subscribe(run, invalidate = noop) {
|
||
const subscriber = [run, invalidate];
|
||
subscribers.add(subscriber);
|
||
if (subscribers.size === 1) {
|
||
stop = start(set) || noop;
|
||
}
|
||
run(value);
|
||
return () => {
|
||
subscribers.delete(subscriber);
|
||
if (subscribers.size === 0) {
|
||
stop();
|
||
stop = null;
|
||
}
|
||
};
|
||
}
|
||
return { set, update, subscribe };
|
||
}
|
||
|
||
function getHotkeysV2(app) {
|
||
// app.hotkeyManager.bake()
|
||
let hotKeyDict = {};
|
||
const hkm = app.hotkeyManager;
|
||
Object.entries(app.commands.commands).forEach(([id, command]) => {
|
||
let isBuiltInCommand = command.name.split(':').length === 1;
|
||
let pluginName = isBuiltInCommand
|
||
? command.id.charAt(0).toUpperCase() + command.id.split(':')[0].slice(1)
|
||
: command.name.split(':', 2)[0];
|
||
let cmdName = isBuiltInCommand
|
||
? command.name
|
||
: // split by ":" remove the first element (plugin name) and join with ":"
|
||
command.name.split(':').slice(1).join(':');
|
||
let hotkeys = (hkm.getHotkeys(command.id) ||
|
||
hkm.getDefaultHotkeys(command.id) ||
|
||
[]);
|
||
// function to prepare hotkey object
|
||
function prepareHotkey(hotkey) {
|
||
let hotkeyObj = {};
|
||
if (hotkey.modifiers) {
|
||
hotkeyObj.modifiers = hotkey.modifiers;
|
||
hotkeyObj.backedModifiers = getConvertedModifiers(hotkey.modifiers).join(',');
|
||
}
|
||
hotkeyObj.key = hotkey.key;
|
||
hotkeyObj.isCustom = isCustomizedHotkey(id, hotkey, app);
|
||
return hotkeyObj;
|
||
}
|
||
// assign hotkey to hotkeyDict
|
||
hotkeys.forEach((hotkey) => {
|
||
let hotkeyObj = prepareHotkey(hotkey);
|
||
if (!hotKeyDict[id]) {
|
||
hotKeyDict[id] = {
|
||
id,
|
||
pluginName,
|
||
cmdName,
|
||
hotkeys: [hotkeyObj],
|
||
};
|
||
}
|
||
else {
|
||
hotKeyDict[id].hotkeys.push(hotkeyObj);
|
||
}
|
||
});
|
||
});
|
||
return hotKeyDict;
|
||
}
|
||
// check if hotkey is Customized
|
||
// app.hotkeyManager.customKeys store all custom hotkeys
|
||
// if reassigned return true
|
||
// https://forum.obsidian.md/t/dataviewjs-snippet-showcase/17847/37
|
||
function isCustomizedHotkey(id, hotkey, app) {
|
||
let isCustom = false;
|
||
let customKeys = app.hotkeyManager.customKeys[id];
|
||
let defaultKeys = app.hotkeyManager.getDefaultHotkeys(id);
|
||
if (customKeys) {
|
||
for (let customHotkey of customKeys) {
|
||
// compare arrays of modifiers, all modifiers must be the same
|
||
if (customHotkey.modifiers.length === hotkey.modifiers.length &&
|
||
customHotkey.modifiers.every((modifier, index) => {
|
||
return modifier === hotkey.modifiers[index];
|
||
}) &&
|
||
customHotkey.key === hotkey.key) {
|
||
isCustom = true;
|
||
}
|
||
else {
|
||
isCustom = false;
|
||
}
|
||
}
|
||
}
|
||
// check if hotkey is default
|
||
if (defaultKeys !== undefined) {
|
||
for (let defaultHotkey of defaultKeys) {
|
||
if (defaultHotkey.modifiers.length === hotkey.modifiers.length &&
|
||
defaultHotkey.modifiers.every((modifier, index) => {
|
||
return modifier === hotkey.modifiers[index];
|
||
}) &&
|
||
defaultHotkey.key === hotkey.key) {
|
||
isCustom = false;
|
||
}
|
||
else {
|
||
isCustom = true;
|
||
}
|
||
}
|
||
}
|
||
else if (defaultKeys === undefined) {
|
||
isCustom = true;
|
||
}
|
||
return isCustom;
|
||
}
|
||
// return true if hotkey duplicated with other hotkey
|
||
function isHotkeyDuplicate(commandID, hotkey) {
|
||
let isDuplicate = false;
|
||
let commands = getHotkeysV2(app);
|
||
for (let command of Object.entries(commands)) {
|
||
let currentCommandID = command[0];
|
||
let currentHotkeys = command[1].hotkeys;
|
||
if (currentCommandID !== commandID) {
|
||
for (let currentHotkey of currentHotkeys) {
|
||
if (currentHotkey.key === hotkey.key &&
|
||
currentHotkey.modifiers.length === hotkey.modifiers.length &&
|
||
currentHotkey.modifiers.every((modifier, index) => {
|
||
return modifier === hotkey.modifiers[index];
|
||
})) {
|
||
isDuplicate = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return isDuplicate;
|
||
}
|
||
function getConvertedModifiers(modifiers) {
|
||
let convertedModifiers = modifiers.map((modifier) => {
|
||
if (modifier === 'Mod') {
|
||
// check macos
|
||
if (obsidian.Platform.isMacOS === true) {
|
||
return 'Cmd';
|
||
}
|
||
else {
|
||
return 'Ctrl';
|
||
}
|
||
}
|
||
if (modifier === 'Meta') {
|
||
// check macos
|
||
if (obsidian.Platform.isMacOS === true) {
|
||
return 'Cmd';
|
||
}
|
||
else {
|
||
return 'Win';
|
||
}
|
||
}
|
||
return modifier;
|
||
});
|
||
return convertedModifiers;
|
||
}
|
||
// sort modifiers
|
||
function sortModifiers(modifiers) {
|
||
let sortedModifiers = modifiers.sort((a, b) => {
|
||
if (a === 'Mod') {
|
||
return -1;
|
||
}
|
||
if (b === 'Mod') {
|
||
return 1;
|
||
}
|
||
if (a === 'Meta') {
|
||
return -1;
|
||
}
|
||
if (b === 'Meta') {
|
||
return 1;
|
||
}
|
||
if (a === 'Ctrl') {
|
||
return -1;
|
||
}
|
||
if (b === 'Ctrl') {
|
||
return 1;
|
||
}
|
||
if (a === 'Alt') {
|
||
return -1;
|
||
}
|
||
if (b === 'Alt') {
|
||
return 1;
|
||
}
|
||
if (a === 'Shift') {
|
||
return -1;
|
||
}
|
||
if (b === 'Shift') {
|
||
return 1;
|
||
}
|
||
});
|
||
return sortedModifiers;
|
||
}
|
||
|
||
const activeKey = writable('');
|
||
const activeModifiers = writable([]);
|
||
|
||
var defaultAttributes = {
|
||
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'
|
||
};
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\Icon.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_fragment$b(ctx) {
|
||
let svg;
|
||
let svg_class_value;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[7].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[6], null);
|
||
|
||
let svg_levels = [
|
||
defaultAttributes,
|
||
/*$$restProps*/ ctx[4],
|
||
{ width: /*size*/ ctx[2] },
|
||
{ height: /*size*/ ctx[2] },
|
||
{ stroke: /*color*/ ctx[1] },
|
||
{ "stroke-width": /*strokeWidth*/ ctx[3] },
|
||
{
|
||
class: svg_class_value = `lucide-icon lucide lucide-${/*name*/ ctx[0]} ${/*$$props*/ ctx[5].class ?? ''}`
|
||
}
|
||
];
|
||
|
||
let svg_data = {};
|
||
|
||
for (let i = 0; i < svg_levels.length; i += 1) {
|
||
svg_data = assign(svg_data, svg_levels[i]);
|
||
}
|
||
|
||
return {
|
||
c() {
|
||
svg = svg_element("svg");
|
||
if (default_slot) default_slot.c();
|
||
set_svg_attributes(svg, svg_data);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, svg, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(svg, null);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 64)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[6],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[6])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[6], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
|
||
set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [
|
||
defaultAttributes,
|
||
dirty & /*$$restProps*/ 16 && /*$$restProps*/ ctx[4],
|
||
(!current || dirty & /*size*/ 4) && { width: /*size*/ ctx[2] },
|
||
(!current || dirty & /*size*/ 4) && { height: /*size*/ ctx[2] },
|
||
(!current || dirty & /*color*/ 2) && { stroke: /*color*/ ctx[1] },
|
||
(!current || dirty & /*strokeWidth*/ 8) && { "stroke-width": /*strokeWidth*/ ctx[3] },
|
||
(!current || dirty & /*name, $$props*/ 33 && svg_class_value !== (svg_class_value = `lucide-icon lucide lucide-${/*name*/ ctx[0]} ${/*$$props*/ ctx[5].class ?? ''}`)) && { class: svg_class_value }
|
||
]));
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(svg);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$b($$self, $$props, $$invalidate) {
|
||
const omit_props_names = ["name","color","size","strokeWidth"];
|
||
let $$restProps = compute_rest_props($$props, omit_props_names);
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
let { name } = $$props;
|
||
let { color = 'currentColor' } = $$props;
|
||
let { size = 24 } = $$props;
|
||
let { strokeWidth = 2 } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(5, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
$$invalidate(4, $$restProps = compute_rest_props($$props, omit_props_names));
|
||
if ('name' in $$new_props) $$invalidate(0, name = $$new_props.name);
|
||
if ('color' in $$new_props) $$invalidate(1, color = $$new_props.color);
|
||
if ('size' in $$new_props) $$invalidate(2, size = $$new_props.size);
|
||
if ('strokeWidth' in $$new_props) $$invalidate(3, strokeWidth = $$new_props.strokeWidth);
|
||
if ('$$scope' in $$new_props) $$invalidate(6, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [name, color, size, strokeWidth, $$restProps, $$props, $$scope, slots];
|
||
}
|
||
|
||
class Icon extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
|
||
init(this, options, instance$b, create_fragment$b, safe_not_equal, {
|
||
name: 0,
|
||
color: 1,
|
||
size: 2,
|
||
strokeWidth: 3
|
||
});
|
||
}
|
||
}
|
||
|
||
var Icon$1 = Icon;
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\icons\circle-dot.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_default_slot$5(ctx) {
|
||
let circle0;
|
||
let t0;
|
||
let circle1;
|
||
let t1;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[1].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
|
||
|
||
return {
|
||
c() {
|
||
circle0 = svg_element("circle");
|
||
t0 = space();
|
||
circle1 = svg_element("circle");
|
||
t1 = space();
|
||
if (default_slot) default_slot.c();
|
||
attr(circle0, "cx", "12");
|
||
attr(circle0, "cy", "12");
|
||
attr(circle0, "r", "10");
|
||
attr(circle1, "cx", "12");
|
||
attr(circle1, "cy", "12");
|
||
attr(circle1, "r", "1");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, circle0, anchor);
|
||
insert(target, t0, anchor);
|
||
insert(target, circle1, anchor);
|
||
insert(target, t1, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(target, anchor);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[2],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(circle0);
|
||
if (detaching) detach(t0);
|
||
if (detaching) detach(circle1);
|
||
if (detaching) detach(t1);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$a(ctx) {
|
||
let icon;
|
||
let current;
|
||
const icon_spread_levels = [{ name: "circle-dot" }, /*$$props*/ ctx[0]];
|
||
|
||
let icon_props = {
|
||
$$slots: { default: [create_default_slot$5] },
|
||
$$scope: { ctx }
|
||
};
|
||
|
||
for (let i = 0; i < icon_spread_levels.length; i += 1) {
|
||
icon_props = assign(icon_props, icon_spread_levels[i]);
|
||
}
|
||
|
||
icon = new Icon$1({ props: icon_props });
|
||
|
||
return {
|
||
c() {
|
||
create_component(icon.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(icon, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
const icon_changes = (dirty & /*$$props*/ 1)
|
||
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
|
||
: {};
|
||
|
||
if (dirty & /*$$scope*/ 4) {
|
||
icon_changes.$$scope = { dirty, ctx };
|
||
}
|
||
|
||
icon.$set(icon_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(icon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(icon, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$a($$self, $$props, $$invalidate) {
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [$$props, slots, $$scope];
|
||
}
|
||
|
||
class Circle_dot extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$a, create_fragment$a, safe_not_equal, {});
|
||
}
|
||
}
|
||
|
||
var CircleDotIcon = Circle_dot;
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\icons\coffee.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_default_slot$4(ctx) {
|
||
let path0;
|
||
let t0;
|
||
let path1;
|
||
let t1;
|
||
let line0;
|
||
let t2;
|
||
let line1;
|
||
let t3;
|
||
let line2;
|
||
let t4;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[1].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
|
||
|
||
return {
|
||
c() {
|
||
path0 = svg_element("path");
|
||
t0 = space();
|
||
path1 = svg_element("path");
|
||
t1 = space();
|
||
line0 = svg_element("line");
|
||
t2 = space();
|
||
line1 = svg_element("line");
|
||
t3 = space();
|
||
line2 = svg_element("line");
|
||
t4 = space();
|
||
if (default_slot) default_slot.c();
|
||
attr(path0, "d", "M17 8h1a4 4 0 1 1 0 8h-1");
|
||
attr(path1, "d", "M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z");
|
||
attr(line0, "x1", "6");
|
||
attr(line0, "y1", "2");
|
||
attr(line0, "x2", "6");
|
||
attr(line0, "y2", "4");
|
||
attr(line1, "x1", "10");
|
||
attr(line1, "y1", "2");
|
||
attr(line1, "x2", "10");
|
||
attr(line1, "y2", "4");
|
||
attr(line2, "x1", "14");
|
||
attr(line2, "y1", "2");
|
||
attr(line2, "x2", "14");
|
||
attr(line2, "y2", "4");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, path0, anchor);
|
||
insert(target, t0, anchor);
|
||
insert(target, path1, anchor);
|
||
insert(target, t1, anchor);
|
||
insert(target, line0, anchor);
|
||
insert(target, t2, anchor);
|
||
insert(target, line1, anchor);
|
||
insert(target, t3, anchor);
|
||
insert(target, line2, anchor);
|
||
insert(target, t4, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(target, anchor);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[2],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(path0);
|
||
if (detaching) detach(t0);
|
||
if (detaching) detach(path1);
|
||
if (detaching) detach(t1);
|
||
if (detaching) detach(line0);
|
||
if (detaching) detach(t2);
|
||
if (detaching) detach(line1);
|
||
if (detaching) detach(t3);
|
||
if (detaching) detach(line2);
|
||
if (detaching) detach(t4);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$9(ctx) {
|
||
let icon;
|
||
let current;
|
||
const icon_spread_levels = [{ name: "coffee" }, /*$$props*/ ctx[0]];
|
||
|
||
let icon_props = {
|
||
$$slots: { default: [create_default_slot$4] },
|
||
$$scope: { ctx }
|
||
};
|
||
|
||
for (let i = 0; i < icon_spread_levels.length; i += 1) {
|
||
icon_props = assign(icon_props, icon_spread_levels[i]);
|
||
}
|
||
|
||
icon = new Icon$1({ props: icon_props });
|
||
|
||
return {
|
||
c() {
|
||
create_component(icon.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(icon, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
const icon_changes = (dirty & /*$$props*/ 1)
|
||
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
|
||
: {};
|
||
|
||
if (dirty & /*$$scope*/ 4) {
|
||
icon_changes.$$scope = { dirty, ctx };
|
||
}
|
||
|
||
icon.$set(icon_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(icon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(icon, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$9($$self, $$props, $$invalidate) {
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [$$props, slots, $$scope];
|
||
}
|
||
|
||
class Coffee extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$9, create_fragment$9, safe_not_equal, {});
|
||
}
|
||
}
|
||
|
||
var CofeeIcon = Coffee;
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\icons\filter.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_default_slot$3(ctx) {
|
||
let polygon;
|
||
let t;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[1].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
|
||
|
||
return {
|
||
c() {
|
||
polygon = svg_element("polygon");
|
||
t = space();
|
||
if (default_slot) default_slot.c();
|
||
attr(polygon, "points", "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, polygon, anchor);
|
||
insert(target, t, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(target, anchor);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[2],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(polygon);
|
||
if (detaching) detach(t);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$8(ctx) {
|
||
let icon;
|
||
let current;
|
||
const icon_spread_levels = [{ name: "filter" }, /*$$props*/ ctx[0]];
|
||
|
||
let icon_props = {
|
||
$$slots: { default: [create_default_slot$3] },
|
||
$$scope: { ctx }
|
||
};
|
||
|
||
for (let i = 0; i < icon_spread_levels.length; i += 1) {
|
||
icon_props = assign(icon_props, icon_spread_levels[i]);
|
||
}
|
||
|
||
icon = new Icon$1({ props: icon_props });
|
||
|
||
return {
|
||
c() {
|
||
create_component(icon.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(icon, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
const icon_changes = (dirty & /*$$props*/ 1)
|
||
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
|
||
: {};
|
||
|
||
if (dirty & /*$$scope*/ 4) {
|
||
icon_changes.$$scope = { dirty, ctx };
|
||
}
|
||
|
||
icon.$set(icon_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(icon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(icon, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$8($$self, $$props, $$invalidate) {
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [$$props, slots, $$scope];
|
||
}
|
||
|
||
class Filter extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$8, create_fragment$8, safe_not_equal, {});
|
||
}
|
||
}
|
||
|
||
var FilterIcon = Filter;
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\icons\refresh-cw.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_default_slot$2(ctx) {
|
||
let path0;
|
||
let t0;
|
||
let path1;
|
||
let t1;
|
||
let path2;
|
||
let t2;
|
||
let path3;
|
||
let t3;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[1].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
|
||
|
||
return {
|
||
c() {
|
||
path0 = svg_element("path");
|
||
t0 = space();
|
||
path1 = svg_element("path");
|
||
t1 = space();
|
||
path2 = svg_element("path");
|
||
t2 = space();
|
||
path3 = svg_element("path");
|
||
t3 = space();
|
||
if (default_slot) default_slot.c();
|
||
attr(path0, "d", "M21 2v6h-6");
|
||
attr(path1, "d", "M3 12a9 9 0 0 1 15-6.7L21 8");
|
||
attr(path2, "d", "M3 22v-6h6");
|
||
attr(path3, "d", "M21 12a9 9 0 0 1-15 6.7L3 16");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, path0, anchor);
|
||
insert(target, t0, anchor);
|
||
insert(target, path1, anchor);
|
||
insert(target, t1, anchor);
|
||
insert(target, path2, anchor);
|
||
insert(target, t2, anchor);
|
||
insert(target, path3, anchor);
|
||
insert(target, t3, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(target, anchor);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[2],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(path0);
|
||
if (detaching) detach(t0);
|
||
if (detaching) detach(path1);
|
||
if (detaching) detach(t1);
|
||
if (detaching) detach(path2);
|
||
if (detaching) detach(t2);
|
||
if (detaching) detach(path3);
|
||
if (detaching) detach(t3);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$7(ctx) {
|
||
let icon;
|
||
let current;
|
||
const icon_spread_levels = [{ name: "refresh-cw" }, /*$$props*/ ctx[0]];
|
||
|
||
let icon_props = {
|
||
$$slots: { default: [create_default_slot$2] },
|
||
$$scope: { ctx }
|
||
};
|
||
|
||
for (let i = 0; i < icon_spread_levels.length; i += 1) {
|
||
icon_props = assign(icon_props, icon_spread_levels[i]);
|
||
}
|
||
|
||
icon = new Icon$1({ props: icon_props });
|
||
|
||
return {
|
||
c() {
|
||
create_component(icon.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(icon, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
const icon_changes = (dirty & /*$$props*/ 1)
|
||
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
|
||
: {};
|
||
|
||
if (dirty & /*$$scope*/ 4) {
|
||
icon_changes.$$scope = { dirty, ctx };
|
||
}
|
||
|
||
icon.$set(icon_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(icon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(icon, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$7($$self, $$props, $$invalidate) {
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [$$props, slots, $$scope];
|
||
}
|
||
|
||
class Refresh_cw extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$7, create_fragment$7, safe_not_equal, {});
|
||
}
|
||
}
|
||
|
||
var RefreshIcon = Refresh_cw;
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\icons\star.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_default_slot$1(ctx) {
|
||
let polygon;
|
||
let t;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[1].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
|
||
|
||
return {
|
||
c() {
|
||
polygon = svg_element("polygon");
|
||
t = space();
|
||
if (default_slot) default_slot.c();
|
||
attr(polygon, "points", "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, polygon, anchor);
|
||
insert(target, t, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(target, anchor);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[2],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(polygon);
|
||
if (detaching) detach(t);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$6(ctx) {
|
||
let icon;
|
||
let current;
|
||
const icon_spread_levels = [{ name: "star" }, /*$$props*/ ctx[0]];
|
||
|
||
let icon_props = {
|
||
$$slots: { default: [create_default_slot$1] },
|
||
$$scope: { ctx }
|
||
};
|
||
|
||
for (let i = 0; i < icon_spread_levels.length; i += 1) {
|
||
icon_props = assign(icon_props, icon_spread_levels[i]);
|
||
}
|
||
|
||
icon = new Icon$1({ props: icon_props });
|
||
|
||
return {
|
||
c() {
|
||
create_component(icon.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(icon, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
const icon_changes = (dirty & /*$$props*/ 1)
|
||
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
|
||
: {};
|
||
|
||
if (dirty & /*$$scope*/ 4) {
|
||
icon_changes.$$scope = { dirty, ctx };
|
||
}
|
||
|
||
icon.$set(icon_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(icon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(icon, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$6($$self, $$props, $$invalidate) {
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [$$props, slots, $$scope];
|
||
}
|
||
|
||
class Star extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$6, create_fragment$6, safe_not_equal, {});
|
||
}
|
||
}
|
||
|
||
var StarIcon = Star;
|
||
|
||
/* node_modules\lucide-svelte\dist\esm\icons\x.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_default_slot(ctx) {
|
||
let line0;
|
||
let t0;
|
||
let line1;
|
||
let t1;
|
||
let current;
|
||
const default_slot_template = /*#slots*/ ctx[1].default;
|
||
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
|
||
|
||
return {
|
||
c() {
|
||
line0 = svg_element("line");
|
||
t0 = space();
|
||
line1 = svg_element("line");
|
||
t1 = space();
|
||
if (default_slot) default_slot.c();
|
||
attr(line0, "x1", "18");
|
||
attr(line0, "y1", "6");
|
||
attr(line0, "x2", "6");
|
||
attr(line0, "y2", "18");
|
||
attr(line1, "x1", "6");
|
||
attr(line1, "y1", "6");
|
||
attr(line1, "x2", "18");
|
||
attr(line1, "y2", "18");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, line0, anchor);
|
||
insert(target, t0, anchor);
|
||
insert(target, line1, anchor);
|
||
insert(target, t1, anchor);
|
||
|
||
if (default_slot) {
|
||
default_slot.m(target, anchor);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/ ctx[2],
|
||
!current
|
||
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
|
||
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(line0);
|
||
if (detaching) detach(t0);
|
||
if (detaching) detach(line1);
|
||
if (detaching) detach(t1);
|
||
if (default_slot) default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$5(ctx) {
|
||
let icon;
|
||
let current;
|
||
const icon_spread_levels = [{ name: "x" }, /*$$props*/ ctx[0]];
|
||
|
||
let icon_props = {
|
||
$$slots: { default: [create_default_slot] },
|
||
$$scope: { ctx }
|
||
};
|
||
|
||
for (let i = 0; i < icon_spread_levels.length; i += 1) {
|
||
icon_props = assign(icon_props, icon_spread_levels[i]);
|
||
}
|
||
|
||
icon = new Icon$1({ props: icon_props });
|
||
|
||
return {
|
||
c() {
|
||
create_component(icon.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(icon, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
const icon_changes = (dirty & /*$$props*/ 1)
|
||
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
|
||
: {};
|
||
|
||
if (dirty & /*$$scope*/ 4) {
|
||
icon_changes.$$scope = { dirty, ctx };
|
||
}
|
||
|
||
icon.$set(icon_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(icon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(icon, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$5($$self, $$props, $$invalidate) {
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
|
||
$$self.$$set = $$new_props => {
|
||
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
|
||
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
|
||
};
|
||
|
||
$$props = exclude_internal_props($$props);
|
||
return [$$props, slots, $$scope];
|
||
}
|
||
|
||
class X extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$5, create_fragment$5, safe_not_equal, {});
|
||
}
|
||
}
|
||
|
||
var CrossIcon = X;
|
||
|
||
/* src\Components\KeyboardKey.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_else_block$1(ctx) {
|
||
let div;
|
||
|
||
let raw_value = (/*unicode*/ ctx[6] && /*unicode*/ ctx[6] !== ''
|
||
? /*unicode*/ ctx[6]
|
||
: /*keyLabel*/ ctx[0]) + "";
|
||
|
||
let div_data_weight_value;
|
||
let mounted;
|
||
let dispose;
|
||
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
attr(div, "class", "kb-layout-key");
|
||
|
||
attr(div, "data-weight", div_data_weight_value = /*keyWeight*/ ctx[2]
|
||
? spreadWeights(/*keyWeight*/ ctx[2])
|
||
: 0);
|
||
|
||
attr(div, "data-key-id", /*keyCode*/ ctx[1]);
|
||
toggle_class(div, "is-active", /*state*/ ctx[7] === 'active');
|
||
toggle_class(div, "small-text", /*smallText*/ ctx[3]);
|
||
|
||
set_style(
|
||
div,
|
||
"grid-row",
|
||
/*height*/ ctx[5] !== 1
|
||
? `span calc(${/*height*/ ctx[5]}*1)`
|
||
: 'span 1',
|
||
false
|
||
);
|
||
|
||
set_style(
|
||
div,
|
||
"grid-column",
|
||
/*width*/ ctx[4] !== 1
|
||
? `span calc(${/*width*/ ctx[4]}*4)`
|
||
: 'span 4',
|
||
false
|
||
);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
div.innerHTML = raw_value;
|
||
|
||
if (!mounted) {
|
||
dispose = listen(div, "click", /*handleClick*/ ctx[8]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty & /*unicode, keyLabel*/ 65 && raw_value !== (raw_value = (/*unicode*/ ctx[6] && /*unicode*/ ctx[6] !== ''
|
||
? /*unicode*/ ctx[6]
|
||
: /*keyLabel*/ ctx[0]) + "")) div.innerHTML = raw_value;
|
||
if (dirty & /*keyWeight*/ 4 && div_data_weight_value !== (div_data_weight_value = /*keyWeight*/ ctx[2]
|
||
? spreadWeights(/*keyWeight*/ ctx[2])
|
||
: 0)) {
|
||
attr(div, "data-weight", div_data_weight_value);
|
||
}
|
||
|
||
if (dirty & /*keyCode*/ 2) {
|
||
attr(div, "data-key-id", /*keyCode*/ ctx[1]);
|
||
}
|
||
|
||
if (dirty & /*state*/ 128) {
|
||
toggle_class(div, "is-active", /*state*/ ctx[7] === 'active');
|
||
}
|
||
|
||
if (dirty & /*smallText*/ 8) {
|
||
toggle_class(div, "small-text", /*smallText*/ ctx[3]);
|
||
}
|
||
|
||
if (dirty & /*height*/ 32) {
|
||
set_style(
|
||
div,
|
||
"grid-row",
|
||
/*height*/ ctx[5] !== 1
|
||
? `span calc(${/*height*/ ctx[5]}*1)`
|
||
: 'span 1',
|
||
false
|
||
);
|
||
}
|
||
|
||
if (dirty & /*width*/ 16) {
|
||
set_style(
|
||
div,
|
||
"grid-column",
|
||
/*width*/ ctx[4] !== 1
|
||
? `span calc(${/*width*/ ctx[4]}*4)`
|
||
: 'span 4',
|
||
false
|
||
);
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
|
||
// (33:0) {#if keyLabel === 'empty'}
|
||
function create_if_block$2(ctx) {
|
||
let div;
|
||
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
attr(div, "class", "kb-layout-key empty");
|
||
|
||
set_style(
|
||
div,
|
||
"grid-column",
|
||
/*width*/ ctx[4]
|
||
? `span calc(${/*width*/ ctx[4]}*4)`
|
||
: 'span 4',
|
||
false
|
||
);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty & /*width*/ 16) {
|
||
set_style(
|
||
div,
|
||
"grid-column",
|
||
/*width*/ ctx[4]
|
||
? `span calc(${/*width*/ ctx[4]}*4)`
|
||
: 'span 4',
|
||
false
|
||
);
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$4(ctx) {
|
||
let if_block_anchor;
|
||
|
||
function select_block_type(ctx, dirty) {
|
||
if (/*keyLabel*/ ctx[0] === 'empty') return create_if_block$2;
|
||
return create_else_block$1;
|
||
}
|
||
|
||
let current_block_type = select_block_type(ctx);
|
||
let if_block = current_block_type(ctx);
|
||
|
||
return {
|
||
c() {
|
||
if_block.c();
|
||
if_block_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
if_block.m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
},
|
||
p(ctx, [dirty]) {
|
||
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
|
||
if_block.p(ctx, dirty);
|
||
} else {
|
||
if_block.d(1);
|
||
if_block = current_block_type(ctx);
|
||
|
||
if (if_block) {
|
||
if_block.c();
|
||
if_block.m(if_block_anchor.parentNode, if_block_anchor);
|
||
}
|
||
}
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if_block.d(detaching);
|
||
if (detaching) detach(if_block_anchor);
|
||
}
|
||
};
|
||
}
|
||
|
||
function spreadWeights(weight) {
|
||
if (weight >= 5) {
|
||
return 5;
|
||
} else if (weight < 5 && weight > 0) {
|
||
return weight;
|
||
} else {
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
function instance$4($$self, $$props, $$invalidate) {
|
||
let { keyLabel = '' } = $$props;
|
||
let { keyOutput = '' } = $$props;
|
||
let { keyCode = -1 } = $$props;
|
||
let { keyWeight = 0 } = $$props;
|
||
let { smallText = false } = $$props;
|
||
let { width = 1 } = $$props;
|
||
let { height = 1 } = $$props;
|
||
let { unicode = '' } = $$props;
|
||
let { state } = $$props;
|
||
const dispatch = createEventDispatcher();
|
||
|
||
const handleClick = () => {
|
||
if (state !== 'disabled') {
|
||
dispatch('kb-key-click', [keyCode, keyOutput]);
|
||
}
|
||
};
|
||
|
||
$$self.$$set = $$props => {
|
||
if ('keyLabel' in $$props) $$invalidate(0, keyLabel = $$props.keyLabel);
|
||
if ('keyOutput' in $$props) $$invalidate(9, keyOutput = $$props.keyOutput);
|
||
if ('keyCode' in $$props) $$invalidate(1, keyCode = $$props.keyCode);
|
||
if ('keyWeight' in $$props) $$invalidate(2, keyWeight = $$props.keyWeight);
|
||
if ('smallText' in $$props) $$invalidate(3, smallText = $$props.smallText);
|
||
if ('width' in $$props) $$invalidate(4, width = $$props.width);
|
||
if ('height' in $$props) $$invalidate(5, height = $$props.height);
|
||
if ('unicode' in $$props) $$invalidate(6, unicode = $$props.unicode);
|
||
if ('state' in $$props) $$invalidate(7, state = $$props.state);
|
||
};
|
||
|
||
return [
|
||
keyLabel,
|
||
keyCode,
|
||
keyWeight,
|
||
smallText,
|
||
width,
|
||
height,
|
||
unicode,
|
||
state,
|
||
handleClick,
|
||
keyOutput
|
||
];
|
||
}
|
||
|
||
class KeyboardKey extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
|
||
init(this, options, instance$4, create_fragment$4, safe_not_equal, {
|
||
keyLabel: 0,
|
||
keyOutput: 9,
|
||
keyCode: 1,
|
||
keyWeight: 2,
|
||
smallText: 3,
|
||
width: 4,
|
||
height: 5,
|
||
unicode: 6,
|
||
state: 7
|
||
});
|
||
}
|
||
}
|
||
|
||
/* src\Components\KeyboardLayout.svelte generated by Svelte v3.49.0 */
|
||
|
||
function add_css(target) {
|
||
append_styles(target, "svelte-oqtk7m", ".keyboard-layout.svelte-oqtk7m{grid-template-columns:var(--kb-grid-columns)}.donation-badge.svelte-oqtk7m{position:absolute;top:24px;right:24px;border:1px dashed var(--text-accent);color:var(--text-accent);font-size:var(--font-scale-0);line-height:initial;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:20px;padding:2px 8px;cursor:pointer}.donation-badge.svelte-oqtk7m:hover{border:1px solid var(--text-accent);background-color:var(--text-accent);color:var(--text-on-accent)}");
|
||
}
|
||
|
||
function get_each_context$2(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[12] = list[i];
|
||
return child_ctx;
|
||
}
|
||
|
||
function get_each_context_1$1(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[15] = list[i];
|
||
return child_ctx;
|
||
}
|
||
|
||
function get_each_context_2(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[18] = list[i];
|
||
child_ctx[19] = list;
|
||
child_ctx[20] = i;
|
||
return child_ctx;
|
||
}
|
||
|
||
// (196:8) {#each Row as Key}
|
||
function create_each_block_2(ctx) {
|
||
let keyboardkey;
|
||
let updating_keyWeight;
|
||
let updating_state;
|
||
let current;
|
||
|
||
function keyboardkey_keyWeight_binding(value) {
|
||
/*keyboardkey_keyWeight_binding*/ ctx[6](value, /*Key*/ ctx[18]);
|
||
}
|
||
|
||
function keyboardkey_state_binding(value) {
|
||
/*keyboardkey_state_binding*/ ctx[7](value, /*Key*/ ctx[18]);
|
||
}
|
||
|
||
let keyboardkey_props = {
|
||
keyLabel: /*Key*/ ctx[18].label,
|
||
keyOutput: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].output,
|
||
keyCode: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].keyCode,
|
||
smallText: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].smallText,
|
||
unicode: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].unicode,
|
||
width: /*Key*/ ctx[18].width,
|
||
height: /*Key*/ ctx[18].height
|
||
};
|
||
|
||
if (/*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight !== void 0) {
|
||
keyboardkey_props.keyWeight = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight;
|
||
}
|
||
|
||
if (/*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state !== void 0) {
|
||
keyboardkey_props.state = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state;
|
||
}
|
||
|
||
keyboardkey = new KeyboardKey({ props: keyboardkey_props });
|
||
binding_callbacks.push(() => bind(keyboardkey, 'keyWeight', keyboardkey_keyWeight_binding));
|
||
binding_callbacks.push(() => bind(keyboardkey, 'state', keyboardkey_state_binding));
|
||
keyboardkey.$on("kb-key-click", /*handleKeyClick*/ ctx[2]);
|
||
|
||
return {
|
||
c() {
|
||
create_component(keyboardkey.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(keyboardkey, target, anchor);
|
||
current = true;
|
||
},
|
||
p(new_ctx, dirty) {
|
||
ctx = new_ctx;
|
||
const keyboardkey_changes = {};
|
||
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.keyLabel = /*Key*/ ctx[18].label;
|
||
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.keyOutput = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].output;
|
||
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.keyCode = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].keyCode;
|
||
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.smallText = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].smallText;
|
||
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.unicode = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].unicode;
|
||
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.width = /*Key*/ ctx[18].width;
|
||
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.height = /*Key*/ ctx[18].height;
|
||
|
||
if (!updating_keyWeight && dirty & /*KeyboardStateDict, KeyboardObject*/ 3) {
|
||
updating_keyWeight = true;
|
||
keyboardkey_changes.keyWeight = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight;
|
||
add_flush_callback(() => updating_keyWeight = false);
|
||
}
|
||
|
||
if (!updating_state && dirty & /*KeyboardStateDict, KeyboardObject*/ 3) {
|
||
updating_state = true;
|
||
keyboardkey_changes.state = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state;
|
||
add_flush_callback(() => updating_state = false);
|
||
}
|
||
|
||
keyboardkey.$set(keyboardkey_changes);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(keyboardkey.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(keyboardkey.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(keyboardkey, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (195:6) {#each Section.rows as Row}
|
||
function create_each_block_1$1(ctx) {
|
||
let each_1_anchor;
|
||
let current;
|
||
let each_value_2 = /*Row*/ ctx[15];
|
||
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() {
|
||
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(ctx, dirty) {
|
||
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
|
||
each_value_2 = /*Row*/ ctx[15];
|
||
let i;
|
||
|
||
for (i = 0; i < each_value_2.length; i += 1) {
|
||
const child_ctx = get_each_context_2(ctx, 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(each_1_anchor.parentNode, each_1_anchor);
|
||
}
|
||
}
|
||
|
||
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) {
|
||
destroy_each(each_blocks, detaching);
|
||
if (detaching) detach(each_1_anchor);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (193:2) {#each KeyboardObject as Section}
|
||
function create_each_block$2(ctx) {
|
||
let div;
|
||
let div_class_value;
|
||
let current;
|
||
let each_value_1 = /*Section*/ ctx[12].rows;
|
||
let each_blocks = [];
|
||
|
||
for (let i = 0; i < each_value_1.length; i += 1) {
|
||
each_blocks[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, 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", div_class_value = "" + (null_to_empty(/*Section*/ ctx[12].name) + " svelte-oqtk7m"));
|
||
},
|
||
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(ctx, dirty) {
|
||
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
|
||
each_value_1 = /*Section*/ ctx[12].rows;
|
||
let i;
|
||
|
||
for (i = 0; i < each_value_1.length; i += 1) {
|
||
const child_ctx = get_each_context_1$1(ctx, 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_1$1(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(div, null);
|
||
}
|
||
}
|
||
|
||
group_outros();
|
||
|
||
for (i = each_value_1.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
|
||
check_outros();
|
||
}
|
||
|
||
if (!current || dirty & /*KeyboardObject*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(/*Section*/ ctx[12].name) + " svelte-oqtk7m"))) {
|
||
attr(div, "class", div_class_value);
|
||
}
|
||
},
|
||
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) {
|
||
if (detaching) detach(div);
|
||
destroy_each(each_blocks, detaching);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$3(ctx) {
|
||
let div2;
|
||
let t0;
|
||
let div1;
|
||
let div0;
|
||
let cofeeicon;
|
||
let t1;
|
||
let t2;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
let each_value = /*KeyboardObject*/ ctx[1];
|
||
let each_blocks = [];
|
||
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
|
||
}
|
||
|
||
const out = i => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
|
||
cofeeicon = new CofeeIcon({ props: { size: 16 } });
|
||
|
||
return {
|
||
c() {
|
||
div2 = element("div");
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
|
||
t0 = space();
|
||
div1 = element("div");
|
||
div0 = element("div");
|
||
create_component(cofeeicon.$$.fragment);
|
||
t1 = text("\r\n Donate");
|
||
t2 = space();
|
||
set_style(div0, "padding-right", "6px");
|
||
attr(div1, "class", "donation-badge svelte-oqtk7m");
|
||
attr(div2, "id", "keyboard-layout");
|
||
set_style(div2, "grid-template-columns", kbGridColumns);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div2, anchor);
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(div2, null);
|
||
}
|
||
|
||
append(div2, t0);
|
||
append(div2, div1);
|
||
append(div1, div0);
|
||
mount_component(cofeeicon, div0, null);
|
||
append(div1, t1);
|
||
insert(target, t2, anchor);
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = listen(div1, "click", /*click_handler*/ ctx[8]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx, [dirty]) {
|
||
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
|
||
each_value = /*KeyboardObject*/ ctx[1];
|
||
let i;
|
||
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context$2(ctx, 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_block$2(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(div2, t0);
|
||
}
|
||
}
|
||
|
||
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]);
|
||
}
|
||
|
||
transition_in(cofeeicon.$$.fragment, local);
|
||
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]);
|
||
}
|
||
|
||
transition_out(cofeeicon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div2);
|
||
destroy_each(each_blocks, detaching);
|
||
destroy_component(cofeeicon);
|
||
if (detaching) detach(t2);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
|
||
let kbGridColumns = '3.75fr 0.75fr 1fr';
|
||
|
||
function instance$3($$self, $$props, $$invalidate) {
|
||
let $activeModifiers;
|
||
let $activeKey;
|
||
component_subscribe($$self, activeModifiers, $$value => $$invalidate(4, $activeModifiers = $$value));
|
||
component_subscribe($$self, activeKey, $$value => $$invalidate(5, $activeKey = $$value));
|
||
let { visibleCommands } = $$props;
|
||
let { KeyboardObject } = $$props;
|
||
let { KeyboardStateDict = {} } = $$props;
|
||
|
||
function getJSKeyEntry(keyLabel, mode = 'name') {
|
||
for (let JSEntry of Object.entries(JavaSciptKeyCodes)) {
|
||
if (mode === 'name' && keyLabel.toLocaleLowerCase() === JSEntry[1].Key.toLocaleLowerCase()) {
|
||
return JSEntry;
|
||
} else if (mode === 'code' && keyLabel.toLocaleLowerCase() === JSEntry[1].Code.toLocaleLowerCase() && keyLabel.toLocaleLowerCase().replace('numpad', '') === JSEntry[1].Key.toLocaleLowerCase()) {
|
||
return JSEntry;
|
||
} else if (keyLabel === 'empty') {
|
||
return ['empty', { Key: 'empty', Code: 'empty' }];
|
||
}
|
||
}
|
||
}
|
||
|
||
function unpackLayout(KeyboardLayout, activeSearchKey, activeSearchModifiers) {
|
||
let KeyboardDict = {};
|
||
|
||
for (let section of KeyboardLayout) {
|
||
for (let row of section.rows) {
|
||
for (let key of row) {
|
||
let JSkeyEntry = key.strictCode
|
||
? getJSKeyEntry(key.label, 'code')
|
||
: getJSKeyEntry(key.label);
|
||
|
||
let keyOutput = key.label;
|
||
let outputKeyObj;
|
||
|
||
if (key.label === 'empty') {
|
||
outputKeyObj = {
|
||
output: key.label,
|
||
keyCode: -2,
|
||
state: 'empty'
|
||
};
|
||
} else {
|
||
keyOutput = key.strictCode ? JSkeyEntry[1].Code : JSkeyEntry[1].Key;
|
||
|
||
// fix modifiers names according to OS - hardcoded for now
|
||
if (keyOutput === 'Control') {
|
||
keyOutput = 'Ctrl';
|
||
|
||
outputKeyObj = {
|
||
output: 'Ctrl',
|
||
smallText: key.smallText ? true : false,
|
||
keyCode: JSkeyEntry[0],
|
||
unicode: 'Ctrl'
|
||
};
|
||
} else if (keyOutput === 'Meta') {
|
||
if (obsidian.Platform.isMacOS === true) {
|
||
outputKeyObj = {
|
||
output: '⌥',
|
||
keyCode: 18,
|
||
smallText: key.smallText ? true : false,
|
||
unicode: '⌥'
|
||
};
|
||
} else {
|
||
outputKeyObj = {
|
||
output: 'Win',
|
||
state: 'disabled',
|
||
smallText: key.smallText ? true : false,
|
||
keyCode: JSkeyEntry[0],
|
||
unicode: '⊞'
|
||
};
|
||
}
|
||
} else if (keyOutput === 'Alt') {
|
||
if (obsidian.Platform.isMacOS === true) {
|
||
outputKeyObj = {
|
||
output: '⌘',
|
||
smallText: key.smallText ? true : false,
|
||
keyCode: 91,
|
||
unicode: '⌘'
|
||
};
|
||
} else {
|
||
keyOutput = 'Alt';
|
||
|
||
outputKeyObj = {
|
||
output: 'Alt',
|
||
smallText: key.smallText ? true : false,
|
||
keyCode: JSkeyEntry[0]
|
||
};
|
||
}
|
||
} else {
|
||
outputKeyObj = {
|
||
output: keyOutput,
|
||
keyCode: JSkeyEntry[0],
|
||
smallText: key.smallText ? true : false,
|
||
unicode: key.tryUnicode ? JSkeyEntry[1].Unicode : ''
|
||
};
|
||
}
|
||
}
|
||
|
||
// check if key is active
|
||
if (activeSearchKey !== null) {
|
||
if (outputKeyObj.output.toLocaleLowerCase() === activeSearchKey.toLocaleLowerCase()) {
|
||
outputKeyObj.state = 'active';
|
||
}
|
||
}
|
||
|
||
// check if modifiers are active
|
||
if (activeSearchModifiers.length > 0) {
|
||
if (activeSearchModifiers.includes(outputKeyObj.output)) {
|
||
outputKeyObj.state = 'active';
|
||
}
|
||
}
|
||
|
||
KeyboardDict[key.label] = outputKeyObj;
|
||
}
|
||
}
|
||
}
|
||
|
||
return KeyboardDict;
|
||
}
|
||
|
||
function calculateWeights(visibleCommands, KeyboardDict) {
|
||
|
||
for (let key of Object.entries(KeyboardDict)) {
|
||
$$invalidate(0, KeyboardStateDict[key[0]].weight = 0, KeyboardStateDict);
|
||
|
||
// calculate how many times a key or modifier is used in the hotkeys list
|
||
let keyWeight = 0;
|
||
|
||
for (let command of visibleCommands) {
|
||
for (let hotkey of command.hotkeys) {
|
||
if (hotkey.key.toLocaleLowerCase() === key[1].output.toLocaleLowerCase()) {
|
||
keyWeight++;
|
||
}
|
||
|
||
for (let modifier of hotkey.modifiers) {
|
||
if (getConvertedModifiers([modifier])[0].toLocaleLowerCase() === key[1].output.toLocaleLowerCase()) {
|
||
keyWeight++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
$$invalidate(0, KeyboardStateDict[key[0]].weight = keyWeight, KeyboardStateDict);
|
||
}
|
||
}
|
||
|
||
function handleKeyClick(e) {
|
||
let keyCode = parseInt(e.detail[0]);
|
||
let keyOutput = e.detail[1];
|
||
JavaSciptKeyCodes[keyCode].Key;
|
||
JavaSciptKeyCodes[keyCode].Code;
|
||
|
||
// check if key is modifier or key
|
||
if (keyCode === 16 || keyCode === 17 || keyCode === 18 || keyCode === 91) {
|
||
// try to put modifier in the active modifiers list
|
||
if ($activeModifiers.includes(keyOutput)) {
|
||
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(modifier => modifier !== keyOutput), $activeModifiers);
|
||
} else {
|
||
// if not in the list, add it
|
||
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers, keyOutput], $activeModifiers);
|
||
}
|
||
} else {
|
||
// try to set key in the active key
|
||
if ($activeKey === keyOutput) {
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
} else {
|
||
set_store_value(activeKey, $activeKey = keyOutput, $activeKey);
|
||
}
|
||
}
|
||
}
|
||
|
||
function keyboardkey_keyWeight_binding(value, Key) {
|
||
if ($$self.$$.not_equal(KeyboardStateDict[Key.label].weight, value)) {
|
||
KeyboardStateDict[Key.label].weight = value;
|
||
((($$invalidate(0, KeyboardStateDict), $$invalidate(1, KeyboardObject)), $$invalidate(5, $activeKey)), $$invalidate(4, $activeModifiers));
|
||
}
|
||
}
|
||
|
||
function keyboardkey_state_binding(value, Key) {
|
||
if ($$self.$$.not_equal(KeyboardStateDict[Key.label].state, value)) {
|
||
KeyboardStateDict[Key.label].state = value;
|
||
((($$invalidate(0, KeyboardStateDict), $$invalidate(1, KeyboardObject)), $$invalidate(5, $activeKey)), $$invalidate(4, $activeModifiers));
|
||
}
|
||
}
|
||
|
||
const click_handler = () => window.open('https://ko-fi.com/S6S5E6K74', '_blank');
|
||
|
||
$$self.$$set = $$props => {
|
||
if ('visibleCommands' in $$props) $$invalidate(3, visibleCommands = $$props.visibleCommands);
|
||
if ('KeyboardObject' in $$props) $$invalidate(1, KeyboardObject = $$props.KeyboardObject);
|
||
if ('KeyboardStateDict' in $$props) $$invalidate(0, KeyboardStateDict = $$props.KeyboardStateDict);
|
||
};
|
||
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & /*KeyboardObject, $activeKey, $activeModifiers*/ 50) {
|
||
$$invalidate(0, KeyboardStateDict = unpackLayout(KeyboardObject, $activeKey, $activeModifiers));
|
||
}
|
||
|
||
if ($$self.$$.dirty & /*visibleCommands, KeyboardStateDict*/ 9) {
|
||
calculateWeights(visibleCommands, KeyboardStateDict);
|
||
}
|
||
};
|
||
|
||
return [
|
||
KeyboardStateDict,
|
||
KeyboardObject,
|
||
handleKeyClick,
|
||
visibleCommands,
|
||
$activeModifiers,
|
||
$activeKey,
|
||
keyboardkey_keyWeight_binding,
|
||
keyboardkey_state_binding,
|
||
click_handler
|
||
];
|
||
}
|
||
|
||
class KeyboardLayout extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
|
||
init(
|
||
this,
|
||
options,
|
||
instance$3,
|
||
create_fragment$3,
|
||
safe_not_equal,
|
||
{
|
||
visibleCommands: 3,
|
||
KeyboardObject: 1,
|
||
KeyboardStateDict: 0
|
||
},
|
||
add_css
|
||
);
|
||
}
|
||
}
|
||
|
||
function cubicInOut(t) {
|
||
return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;
|
||
}
|
||
function cubicOut(t) {
|
||
const f = t - 1.0;
|
||
return f * f * f + 1.0;
|
||
}
|
||
|
||
function blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {
|
||
const style = getComputedStyle(node);
|
||
const target_opacity = +style.opacity;
|
||
const f = style.filter === 'none' ? '' : style.filter;
|
||
const od = target_opacity * (1 - opacity);
|
||
return {
|
||
delay,
|
||
duration,
|
||
easing,
|
||
css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`
|
||
};
|
||
}
|
||
function fade(node, { delay = 0, duration = 400, easing = identity } = {}) {
|
||
const o = +getComputedStyle(node).opacity;
|
||
return {
|
||
delay,
|
||
duration,
|
||
easing,
|
||
css: t => `opacity: ${t * o}`
|
||
};
|
||
}
|
||
function slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {
|
||
const style = getComputedStyle(node);
|
||
const opacity = +style.opacity;
|
||
const height = parseFloat(style.height);
|
||
const padding_top = parseFloat(style.paddingTop);
|
||
const padding_bottom = parseFloat(style.paddingBottom);
|
||
const margin_top = parseFloat(style.marginTop);
|
||
const margin_bottom = parseFloat(style.marginBottom);
|
||
const border_top_width = parseFloat(style.borderTopWidth);
|
||
const border_bottom_width = parseFloat(style.borderBottomWidth);
|
||
return {
|
||
delay,
|
||
duration,
|
||
easing,
|
||
css: t => 'overflow: hidden;' +
|
||
`opacity: ${Math.min(t * 20, 1) * opacity};` +
|
||
`height: ${t * height}px;` +
|
||
`padding-top: ${t * padding_top}px;` +
|
||
`padding-bottom: ${t * padding_bottom}px;` +
|
||
`margin-top: ${t * margin_top}px;` +
|
||
`margin-bottom: ${t * margin_bottom}px;` +
|
||
`border-top-width: ${t * border_top_width}px;` +
|
||
`border-bottom-width: ${t * border_bottom_width}px;`
|
||
};
|
||
}
|
||
|
||
var dist = createCommonjsModule(function (module, exports) {
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.clickOutside = void 0;
|
||
function clickOutside(node, handler) {
|
||
var onClick = function (event) {
|
||
return node &&
|
||
!node.contains(event.target) &&
|
||
!event.defaultPrevented &&
|
||
handler();
|
||
};
|
||
document.addEventListener('click', onClick, true);
|
||
return {
|
||
destroy: function () {
|
||
document.removeEventListener('click', onClick, true);
|
||
},
|
||
};
|
||
}
|
||
exports.clickOutside = clickOutside;
|
||
|
||
});
|
||
|
||
function longpress(node, duration) {
|
||
let timer;
|
||
|
||
const handleMousedown = () => {
|
||
timer = setTimeout(() => {
|
||
node.dispatchEvent(new CustomEvent('longpress-start'));
|
||
}, duration);
|
||
};
|
||
|
||
const handleMouseup = () => {
|
||
if (!timer) {
|
||
node.dispatchEvent(new CustomEvent('longpress-end'));
|
||
} else {
|
||
clearTimeout(timer);
|
||
}
|
||
};
|
||
|
||
node.addEventListener('mousedown', handleMousedown);
|
||
node.addEventListener('mouseup', handleMouseup);
|
||
|
||
return {
|
||
update(newDuration) {
|
||
duration = newDuration;
|
||
},
|
||
destroy() {
|
||
node.removeEventListener('mousedown', handleMousedown);
|
||
node.removeEventListener('mouseup', handleMouseup);
|
||
},
|
||
}
|
||
}
|
||
|
||
/* src\Components\SearchMenu.svelte generated by Svelte v3.49.0 */
|
||
|
||
function get_each_context$1(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[37] = list[i];
|
||
return child_ctx;
|
||
}
|
||
|
||
// (185:6) {#if $activeModifiers.length > 0 || $activeKey !== null}
|
||
function create_if_block_3(ctx) {
|
||
let t;
|
||
let if_block_anchor;
|
||
let current;
|
||
let each_value = sortModifiers(/*$activeModifiers*/ ctx[11]);
|
||
let each_blocks = [];
|
||
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
|
||
}
|
||
|
||
const out = i => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
|
||
let if_block = /*$activeKey*/ ctx[10] !== '' && create_if_block_4(ctx);
|
||
|
||
return {
|
||
c() {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
|
||
t = space();
|
||
if (if_block) if_block.c();
|
||
if_block_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(target, anchor);
|
||
}
|
||
|
||
insert(target, t, anchor);
|
||
if (if_block) if_block.m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty[0] & /*$activeModifiers, inputHTML*/ 2049) {
|
||
each_value = sortModifiers(/*$activeModifiers*/ ctx[11]);
|
||
let i;
|
||
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context$1(ctx, 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_block$1(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(t.parentNode, t);
|
||
}
|
||
}
|
||
|
||
group_outros();
|
||
|
||
for (i = each_value.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
|
||
check_outros();
|
||
}
|
||
|
||
if (/*$activeKey*/ ctx[10] !== '') {
|
||
if (if_block) {
|
||
if_block.p(ctx, dirty);
|
||
|
||
if (dirty[0] & /*$activeKey*/ 1024) {
|
||
transition_in(if_block, 1);
|
||
}
|
||
} else {
|
||
if_block = create_if_block_4(ctx);
|
||
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;
|
||
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
transition_in(each_blocks[i]);
|
||
}
|
||
|
||
transition_in(if_block);
|
||
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]);
|
||
}
|
||
|
||
transition_out(if_block);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_each(each_blocks, detaching);
|
||
if (detaching) detach(t);
|
||
if (if_block) if_block.d(detaching);
|
||
if (detaching) detach(if_block_anchor);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (186:8) {#each sortModifiers($activeModifiers) as modifier}
|
||
function create_each_block$1(ctx) {
|
||
let kbd;
|
||
let t_value = /*modifier*/ ctx[37] + "";
|
||
let t;
|
||
let kbd_intro;
|
||
let kbd_outro;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
|
||
function click_handler() {
|
||
return /*click_handler*/ ctx[17](/*modifier*/ ctx[37]);
|
||
}
|
||
|
||
return {
|
||
c() {
|
||
kbd = element("kbd");
|
||
t = text(t_value);
|
||
attr(kbd, "class", "modifier");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, kbd, anchor);
|
||
append(kbd, t);
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = listen(kbd, "click", click_handler);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(new_ctx, dirty) {
|
||
ctx = new_ctx;
|
||
if ((!current || dirty[0] & /*$activeModifiers*/ 2048) && t_value !== (t_value = /*modifier*/ ctx[37] + "")) set_data(t, t_value);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
|
||
add_render_callback(() => {
|
||
if (kbd_outro) kbd_outro.end(1);
|
||
kbd_intro = create_in_transition(kbd, slide, { duration: 100 });
|
||
kbd_intro.start();
|
||
});
|
||
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
if (kbd_intro) kbd_intro.invalidate();
|
||
kbd_outro = create_out_transition(kbd, fade, { duration: 50 });
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(kbd);
|
||
if (detaching && kbd_outro) kbd_outro.end();
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
|
||
// (199:8) {#if $activeKey !== ''}
|
||
function create_if_block_4(ctx) {
|
||
let kbd;
|
||
|
||
let t_value = (/*$activeKey*/ ctx[10] in SpecialSymbols
|
||
? SpecialSymbols[/*$activeKey*/ ctx[10]]
|
||
: /*$activeKey*/ ctx[10].length === 1
|
||
? /*$activeKey*/ ctx[10].toUpperCase()
|
||
: /*$activeKey*/ ctx[10]) + "";
|
||
|
||
let t;
|
||
let kbd_intro;
|
||
let kbd_outro;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
|
||
return {
|
||
c() {
|
||
kbd = element("kbd");
|
||
t = text(t_value);
|
||
attr(kbd, "class", "modifier");
|
||
set_style(kbd, "padding-left", "8px");
|
||
set_style(kbd, "padding-right", "8px");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, kbd, anchor);
|
||
append(kbd, t);
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = listen(kbd, "click", /*click_handler_1*/ ctx[18]);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx, dirty) {
|
||
if ((!current || dirty[0] & /*$activeKey*/ 1024) && t_value !== (t_value = (/*$activeKey*/ ctx[10] in SpecialSymbols
|
||
? SpecialSymbols[/*$activeKey*/ ctx[10]]
|
||
: /*$activeKey*/ ctx[10].length === 1
|
||
? /*$activeKey*/ ctx[10].toUpperCase()
|
||
: /*$activeKey*/ ctx[10]) + "")) set_data(t, t_value);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
|
||
add_render_callback(() => {
|
||
if (kbd_outro) kbd_outro.end(1);
|
||
kbd_intro = create_in_transition(kbd, slide, { duration: 100 });
|
||
kbd_intro.start();
|
||
});
|
||
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
if (kbd_intro) kbd_intro.invalidate();
|
||
kbd_outro = create_out_transition(kbd, fade, { duration: 50 });
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(kbd);
|
||
if (detaching && kbd_outro) kbd_outro.end();
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
|
||
// (266:2) {#if filterIsOpen}
|
||
function create_if_block_2(ctx) {
|
||
let div17;
|
||
let div15;
|
||
let div2;
|
||
let div0;
|
||
let input0;
|
||
let t0;
|
||
let div1;
|
||
let t2;
|
||
let div5;
|
||
let div3;
|
||
let input1;
|
||
let t3;
|
||
let div4;
|
||
let t5;
|
||
let div8;
|
||
let div6;
|
||
let input2;
|
||
let t6;
|
||
let div7;
|
||
let t8;
|
||
let div11;
|
||
let div9;
|
||
let input3;
|
||
let t9;
|
||
let div10;
|
||
let t11;
|
||
let div14;
|
||
let div12;
|
||
let input4;
|
||
let t12;
|
||
let div13;
|
||
let div15_transition;
|
||
let t14;
|
||
let div16;
|
||
let div17_class_value;
|
||
let clickOutside_action;
|
||
let div17_transition;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
|
||
return {
|
||
c() {
|
||
div17 = element("div");
|
||
div15 = element("div");
|
||
div2 = element("div");
|
||
div0 = element("div");
|
||
input0 = element("input");
|
||
t0 = space();
|
||
div1 = element("div");
|
||
div1.textContent = "Display featured first";
|
||
t2 = space();
|
||
div5 = element("div");
|
||
div3 = element("div");
|
||
input1 = element("input");
|
||
t3 = space();
|
||
div4 = element("div");
|
||
div4.textContent = "Strict Search";
|
||
t5 = space();
|
||
div8 = element("div");
|
||
div6 = element("div");
|
||
input2 = element("input");
|
||
t6 = space();
|
||
div7 = element("div");
|
||
div7.textContent = "Highlight custom hotkeys";
|
||
t8 = space();
|
||
div11 = element("div");
|
||
div9 = element("div");
|
||
input3 = element("input");
|
||
t9 = space();
|
||
div10 = element("div");
|
||
div10.textContent = "Highlight hotkey duplicates";
|
||
t11 = space();
|
||
div14 = element("div");
|
||
div12 = element("div");
|
||
input4 = element("input");
|
||
t12 = space();
|
||
div13 = element("div");
|
||
div13.textContent = "Display command ID's";
|
||
t14 = space();
|
||
div16 = element("div");
|
||
attr(input0, "type", "checkbox");
|
||
attr(input0, "tabindex", "0");
|
||
attr(div0, "class", "checkbox-container");
|
||
toggle_class(div0, "is-enabled", /*FilterSettings*/ ctx[2].FeaturedFirst);
|
||
attr(div1, "class", "setting-item-name popup-filter-title");
|
||
attr(div2, "class", "setting-item mod-toggle popup-filter-menu");
|
||
attr(input1, "type", "checkbox");
|
||
attr(input1, "tabindex", "0");
|
||
attr(div3, "class", "checkbox-container");
|
||
toggle_class(div3, "is-enabled", /*FilterSettings*/ ctx[2].StrictSearch);
|
||
attr(div4, "class", "setting-item-name popup-filter-title");
|
||
attr(div5, "class", "setting-item mod-toggle popup-filter-menu");
|
||
attr(input2, "type", "checkbox");
|
||
attr(input2, "tabindex", "0");
|
||
attr(div6, "class", "checkbox-container");
|
||
toggle_class(div6, "is-enabled", /*FilterSettings*/ ctx[2].HighlightCustom);
|
||
attr(div7, "class", "setting-item-name popup-filter-title");
|
||
attr(div8, "class", "setting-item mod-toggle popup-filter-menu");
|
||
attr(input3, "type", "checkbox");
|
||
attr(input3, "tabindex", "0");
|
||
attr(div9, "class", "checkbox-container");
|
||
toggle_class(div9, "is-enabled", /*FilterSettings*/ ctx[2].HighlightDuplicates);
|
||
attr(div10, "class", "setting-item-name popup-filter-title");
|
||
attr(div11, "class", "setting-item mod-toggle popup-filter-menu");
|
||
attr(input4, "type", "checkbox");
|
||
attr(input4, "tabindex", "0");
|
||
attr(div12, "class", "checkbox-container");
|
||
toggle_class(div12, "is-enabled", /*FilterSettings*/ ctx[2].DisplayIDs);
|
||
attr(div13, "class", "setting-item-name popup-filter-title");
|
||
attr(div14, "class", "setting-item mod-toggle popup-filter-menu");
|
||
attr(div16, "class", "popup-filter-menu-background");
|
||
attr(div17, "class", div17_class_value = "popup-filter-menu-container " + (/*filterIsOpen*/ ctx[8] ? 'is-open' : ''));
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div17, anchor);
|
||
append(div17, div15);
|
||
append(div15, div2);
|
||
append(div2, div0);
|
||
append(div0, input0);
|
||
input0.checked = /*FilterSettings*/ ctx[2].FeaturedFirst;
|
||
append(div2, t0);
|
||
append(div2, div1);
|
||
append(div15, t2);
|
||
append(div15, div5);
|
||
append(div5, div3);
|
||
append(div3, input1);
|
||
input1.checked = /*FilterSettings*/ ctx[2].StrictSearch;
|
||
append(div5, t3);
|
||
append(div5, div4);
|
||
append(div15, t5);
|
||
append(div15, div8);
|
||
append(div8, div6);
|
||
append(div6, input2);
|
||
input2.checked = /*FilterSettings*/ ctx[2].HighlightCustom;
|
||
append(div8, t6);
|
||
append(div8, div7);
|
||
append(div15, t8);
|
||
append(div15, div11);
|
||
append(div11, div9);
|
||
append(div9, input3);
|
||
input3.checked = /*FilterSettings*/ ctx[2].HighlightDuplicates;
|
||
append(div11, t9);
|
||
append(div11, div10);
|
||
append(div15, t11);
|
||
append(div15, div14);
|
||
append(div14, div12);
|
||
append(div12, input4);
|
||
input4.checked = /*FilterSettings*/ ctx[2].DisplayIDs;
|
||
append(div14, t12);
|
||
append(div14, div13);
|
||
append(div17, t14);
|
||
append(div17, div16);
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(input0, "change", /*input0_change_handler*/ ctx[26]),
|
||
listen(div0, "click", /*dispatchFeaturedFirstOptionTriggered*/ ctx[15]),
|
||
listen(input1, "change", /*input1_change_handler*/ ctx[27]),
|
||
listen(div3, "click", /*click_handler_3*/ ctx[28]),
|
||
listen(input2, "change", /*input2_change_handler*/ ctx[29]),
|
||
listen(div6, "click", /*click_handler_4*/ ctx[30]),
|
||
listen(input3, "change", /*input3_change_handler*/ ctx[31]),
|
||
listen(div9, "click", /*click_handler_5*/ ctx[32]),
|
||
listen(input4, "change", /*input4_change_handler*/ ctx[33]),
|
||
listen(div12, "click", /*click_handler_6*/ ctx[34]),
|
||
action_destroyer(clickOutside_action = dist.clickOutside.call(null, div17, /*clickOutside_function*/ ctx[35]))
|
||
];
|
||
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
input0.checked = /*FilterSettings*/ ctx[2].FeaturedFirst;
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
toggle_class(div0, "is-enabled", /*FilterSettings*/ ctx[2].FeaturedFirst);
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
input1.checked = /*FilterSettings*/ ctx[2].StrictSearch;
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
toggle_class(div3, "is-enabled", /*FilterSettings*/ ctx[2].StrictSearch);
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
input2.checked = /*FilterSettings*/ ctx[2].HighlightCustom;
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
toggle_class(div6, "is-enabled", /*FilterSettings*/ ctx[2].HighlightCustom);
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
input3.checked = /*FilterSettings*/ ctx[2].HighlightDuplicates;
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
toggle_class(div9, "is-enabled", /*FilterSettings*/ ctx[2].HighlightDuplicates);
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
input4.checked = /*FilterSettings*/ ctx[2].DisplayIDs;
|
||
}
|
||
|
||
if (dirty[0] & /*FilterSettings*/ 4) {
|
||
toggle_class(div12, "is-enabled", /*FilterSettings*/ ctx[2].DisplayIDs);
|
||
}
|
||
|
||
if (!current || dirty[0] & /*filterIsOpen*/ 256 && div17_class_value !== (div17_class_value = "popup-filter-menu-container " + (/*filterIsOpen*/ ctx[8] ? 'is-open' : ''))) {
|
||
attr(div17, "class", div17_class_value);
|
||
}
|
||
|
||
if (clickOutside_action && is_function(clickOutside_action.update) && dirty[0] & /*filterIsOpen*/ 256) clickOutside_action.update.call(null, /*clickOutside_function*/ ctx[35]);
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
|
||
add_render_callback(() => {
|
||
if (!div15_transition) div15_transition = create_bidirectional_transition(div15, fade, {}, true);
|
||
div15_transition.run(1);
|
||
});
|
||
|
||
add_render_callback(() => {
|
||
if (!div17_transition) div17_transition = create_bidirectional_transition(div17, slide, {}, true);
|
||
div17_transition.run(1);
|
||
});
|
||
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
if (!div15_transition) div15_transition = create_bidirectional_transition(div15, fade, {}, false);
|
||
div15_transition.run(0);
|
||
if (!div17_transition) div17_transition = create_bidirectional_transition(div17, slide, {}, false);
|
||
div17_transition.run(0);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div17);
|
||
if (detaching && div15_transition) div15_transition.end();
|
||
if (detaching && div17_transition) div17_transition.end();
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (388:40)
|
||
function create_if_block_1$1(ctx) {
|
||
let span;
|
||
let span_intro;
|
||
|
||
return {
|
||
c() {
|
||
span = element("span");
|
||
span.textContent = "Hotkeys not found";
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, span, anchor);
|
||
},
|
||
p: noop,
|
||
i(local) {
|
||
if (!span_intro) {
|
||
add_render_callback(() => {
|
||
span_intro = create_in_transition(span, blur, { duration: 100 });
|
||
span_intro.start();
|
||
});
|
||
}
|
||
},
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching) detach(span);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (384:4) {#if searchCommandsCount !== 0}
|
||
function create_if_block$1(ctx) {
|
||
let span;
|
||
let t0;
|
||
let t1;
|
||
let t2;
|
||
let t3;
|
||
let span_intro;
|
||
|
||
return {
|
||
c() {
|
||
span = element("span");
|
||
t0 = text(/*searchHotkeysCount*/ ctx[6]);
|
||
t1 = text(" keys | ");
|
||
t2 = text(/*searchCommandsCount*/ ctx[5]);
|
||
t3 = text(" cmds");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, span, anchor);
|
||
append(span, t0);
|
||
append(span, t1);
|
||
append(span, t2);
|
||
append(span, t3);
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty[0] & /*searchHotkeysCount*/ 64) set_data(t0, /*searchHotkeysCount*/ ctx[6]);
|
||
if (dirty[0] & /*searchCommandsCount*/ 32) set_data(t2, /*searchCommandsCount*/ ctx[5]);
|
||
},
|
||
i(local) {
|
||
if (!span_intro) {
|
||
add_render_callback(() => {
|
||
span_intro = create_in_transition(span, blur, { duration: 100 });
|
||
span_intro.start();
|
||
});
|
||
}
|
||
},
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching) detach(span);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$2(ctx) {
|
||
let div7;
|
||
let div5;
|
||
let div0;
|
||
let t0;
|
||
let div4;
|
||
let input;
|
||
let t1;
|
||
let div3;
|
||
let div1;
|
||
let circledoticon;
|
||
let div1_class_value;
|
||
let div1_aria_label_value;
|
||
let t2;
|
||
let div2;
|
||
let crossicon;
|
||
let t3;
|
||
let button0;
|
||
let filtericon;
|
||
let button0_class_value;
|
||
let t4;
|
||
let t5;
|
||
let div6;
|
||
let t6;
|
||
let button1;
|
||
let refreshicon;
|
||
let button1_class_value;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
let if_block0 = (/*$activeModifiers*/ ctx[11].length > 0 || /*$activeKey*/ ctx[10] !== null) && create_if_block_3(ctx);
|
||
circledoticon = new CircleDotIcon({ props: { size: 20 } });
|
||
crossicon = new CrossIcon({ props: { size: 20 } });
|
||
filtericon = new FilterIcon({ props: { size: 16 } });
|
||
let if_block1 = /*filterIsOpen*/ ctx[8] && create_if_block_2(ctx);
|
||
|
||
function select_block_type(ctx, dirty) {
|
||
if (/*searchCommandsCount*/ ctx[5] !== 0) return create_if_block$1;
|
||
if (/*searchCommandsCount*/ ctx[5] === 0) return create_if_block_1$1;
|
||
}
|
||
|
||
let current_block_type = select_block_type(ctx);
|
||
let if_block2 = current_block_type && current_block_type(ctx);
|
||
refreshicon = new RefreshIcon({ props: { size: 16 } });
|
||
|
||
return {
|
||
c() {
|
||
div7 = element("div");
|
||
div5 = element("div");
|
||
div0 = element("div");
|
||
if (if_block0) if_block0.c();
|
||
t0 = space();
|
||
div4 = element("div");
|
||
input = element("input");
|
||
t1 = space();
|
||
div3 = element("div");
|
||
div1 = element("div");
|
||
create_component(circledoticon.$$.fragment);
|
||
t2 = space();
|
||
div2 = element("div");
|
||
create_component(crossicon.$$.fragment);
|
||
t3 = space();
|
||
button0 = element("button");
|
||
create_component(filtericon.$$.fragment);
|
||
t4 = space();
|
||
if (if_block1) if_block1.c();
|
||
t5 = space();
|
||
div6 = element("div");
|
||
if (if_block2) if_block2.c();
|
||
t6 = space();
|
||
button1 = element("button");
|
||
create_component(refreshicon.$$.fragment);
|
||
attr(div0, "class", "modifiers-wrapper");
|
||
attr(input, "type", "text");
|
||
attr(input, "placeholder", "Filter...");
|
||
attr(div1, "class", div1_class_value = "keyboard-icon icon " + (/*keyboardListenerIsActive*/ ctx[3] ? 'pulse' : ''));
|
||
|
||
attr(div1, "aria-label", div1_aria_label_value = /*keyboardListenerIsActive*/ ctx[3]
|
||
? 'Press Esc to deactivate key listener'
|
||
: `Press ${getConvertedModifiers(['Mod'])[0]}+F or long press to activate key listener`);
|
||
|
||
attr(div2, "class", "clear-icon icon");
|
||
attr(div3, "class", "meta-search-wrapper");
|
||
attr(div4, "class", "hotkey-search-container");
|
||
attr(div5, "class", "search-wrapper");
|
||
toggle_class(div5, "is-focused", /*inputIsFocused*/ ctx[7]);
|
||
attr(button0, "id", "hotkey-filter-button");
|
||
attr(button0, "class", button0_class_value = /*filterIsOpen*/ ctx[8] ? 'is-active' : '');
|
||
attr(button0, "aria-label", "Filter Commands");
|
||
attr(div6, "class", "community-plugin-search-summary u-muted");
|
||
set_style(div6, "display", "flex");
|
||
set_style(div6, "justify-content", "center");
|
||
set_style(div6, "font-size", "14px");
|
||
attr(button1, "id", "hotkey-refresh-button");
|
||
attr(button1, "aria-label", "Refresh Commands");
|
||
attr(button1, "class", button1_class_value = /*refreshIsActive*/ ctx[9] ? 'animation-is-active' : '');
|
||
attr(div7, "class", "hotkey-settings-container");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div7, anchor);
|
||
append(div7, div5);
|
||
append(div5, div0);
|
||
if (if_block0) if_block0.m(div0, null);
|
||
append(div5, t0);
|
||
append(div5, div4);
|
||
append(div4, input);
|
||
set_input_value(input, /*search*/ ctx[1]);
|
||
/*input_binding*/ ctx[20](input);
|
||
append(div4, t1);
|
||
append(div4, div3);
|
||
append(div3, div1);
|
||
mount_component(circledoticon, div1, null);
|
||
append(div3, t2);
|
||
append(div3, div2);
|
||
mount_component(crossicon, div2, null);
|
||
append(div7, t3);
|
||
append(div7, button0);
|
||
mount_component(filtericon, button0, null);
|
||
append(div7, t4);
|
||
if (if_block1) if_block1.m(div7, null);
|
||
append(div7, t5);
|
||
append(div7, div6);
|
||
if (if_block2) if_block2.m(div6, null);
|
||
append(div7, t6);
|
||
append(div7, button1);
|
||
mount_component(refreshicon, button1, null);
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(input, "input", /*input_input_handler*/ ctx[19]),
|
||
listen(input, "focus", /*focus_handler*/ ctx[21]),
|
||
listen(input, "blur", /*blur_handler*/ ctx[22]),
|
||
listen(div1, "click", /*ActivateKeyboardListener*/ ctx[13]),
|
||
action_destroyer(longpress.call(null, div1, 600)),
|
||
listen(div1, "longpress-start", /*longpress_start_handler*/ ctx[23]),
|
||
listen(div1, "longpress-end", /*longpress_end_handler*/ ctx[24]),
|
||
listen(div2, "click", /*ClearSearch*/ ctx[12]),
|
||
listen(button0, "click", /*click_handler_2*/ ctx[25]),
|
||
listen(button1, "click", /*sendRefreshCommands*/ ctx[14]),
|
||
listen(div7, "keydown", /*onModifierKeyDown*/ ctx[16])
|
||
];
|
||
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx, dirty) {
|
||
if (/*$activeModifiers*/ ctx[11].length > 0 || /*$activeKey*/ ctx[10] !== null) {
|
||
if (if_block0) {
|
||
if_block0.p(ctx, dirty);
|
||
|
||
if (dirty[0] & /*$activeModifiers, $activeKey*/ 3072) {
|
||
transition_in(if_block0, 1);
|
||
}
|
||
} else {
|
||
if_block0 = create_if_block_3(ctx);
|
||
if_block0.c();
|
||
transition_in(if_block0, 1);
|
||
if_block0.m(div0, null);
|
||
}
|
||
} else if (if_block0) {
|
||
group_outros();
|
||
|
||
transition_out(if_block0, 1, 1, () => {
|
||
if_block0 = null;
|
||
});
|
||
|
||
check_outros();
|
||
}
|
||
|
||
if (dirty[0] & /*search*/ 2 && input.value !== /*search*/ ctx[1]) {
|
||
set_input_value(input, /*search*/ ctx[1]);
|
||
}
|
||
|
||
if (!current || dirty[0] & /*keyboardListenerIsActive*/ 8 && div1_class_value !== (div1_class_value = "keyboard-icon icon " + (/*keyboardListenerIsActive*/ ctx[3] ? 'pulse' : ''))) {
|
||
attr(div1, "class", div1_class_value);
|
||
}
|
||
|
||
if (!current || dirty[0] & /*keyboardListenerIsActive*/ 8 && div1_aria_label_value !== (div1_aria_label_value = /*keyboardListenerIsActive*/ ctx[3]
|
||
? 'Press Esc to deactivate key listener'
|
||
: `Press ${getConvertedModifiers(['Mod'])[0]}+F or long press to activate key listener`)) {
|
||
attr(div1, "aria-label", div1_aria_label_value);
|
||
}
|
||
|
||
if (dirty[0] & /*inputIsFocused*/ 128) {
|
||
toggle_class(div5, "is-focused", /*inputIsFocused*/ ctx[7]);
|
||
}
|
||
|
||
if (!current || dirty[0] & /*filterIsOpen*/ 256 && button0_class_value !== (button0_class_value = /*filterIsOpen*/ ctx[8] ? 'is-active' : '')) {
|
||
attr(button0, "class", button0_class_value);
|
||
}
|
||
|
||
if (/*filterIsOpen*/ ctx[8]) {
|
||
if (if_block1) {
|
||
if_block1.p(ctx, dirty);
|
||
|
||
if (dirty[0] & /*filterIsOpen*/ 256) {
|
||
transition_in(if_block1, 1);
|
||
}
|
||
} else {
|
||
if_block1 = create_if_block_2(ctx);
|
||
if_block1.c();
|
||
transition_in(if_block1, 1);
|
||
if_block1.m(div7, t5);
|
||
}
|
||
} else if (if_block1) {
|
||
group_outros();
|
||
|
||
transition_out(if_block1, 1, 1, () => {
|
||
if_block1 = null;
|
||
});
|
||
|
||
check_outros();
|
||
}
|
||
|
||
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block2) {
|
||
if_block2.p(ctx, dirty);
|
||
} else {
|
||
if (if_block2) if_block2.d(1);
|
||
if_block2 = current_block_type && current_block_type(ctx);
|
||
|
||
if (if_block2) {
|
||
if_block2.c();
|
||
transition_in(if_block2, 1);
|
||
if_block2.m(div6, null);
|
||
}
|
||
}
|
||
|
||
if (!current || dirty[0] & /*refreshIsActive*/ 512 && button1_class_value !== (button1_class_value = /*refreshIsActive*/ ctx[9] ? 'animation-is-active' : '')) {
|
||
attr(button1, "class", button1_class_value);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(if_block0);
|
||
transition_in(circledoticon.$$.fragment, local);
|
||
transition_in(crossicon.$$.fragment, local);
|
||
transition_in(filtericon.$$.fragment, local);
|
||
transition_in(if_block1);
|
||
transition_in(if_block2);
|
||
transition_in(refreshicon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block0);
|
||
transition_out(circledoticon.$$.fragment, local);
|
||
transition_out(crossicon.$$.fragment, local);
|
||
transition_out(filtericon.$$.fragment, local);
|
||
transition_out(if_block1);
|
||
transition_out(refreshicon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div7);
|
||
if (if_block0) if_block0.d();
|
||
/*input_binding*/ ctx[20](null);
|
||
destroy_component(circledoticon);
|
||
destroy_component(crossicon);
|
||
destroy_component(filtericon);
|
||
if (if_block1) if_block1.d();
|
||
|
||
if (if_block2) {
|
||
if_block2.d();
|
||
}
|
||
|
||
destroy_component(refreshicon);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$2($$self, $$props, $$invalidate) {
|
||
let $activeKey;
|
||
let $activeModifiers;
|
||
component_subscribe($$self, activeKey, $$value => $$invalidate(10, $activeKey = $$value));
|
||
component_subscribe($$self, activeModifiers, $$value => $$invalidate(11, $activeModifiers = $$value));
|
||
let { plugin } = $$props;
|
||
let { inputHTML } = $$props;
|
||
let { search = '' } = $$props;
|
||
let { searchCommandsCount } = $$props;
|
||
let { searchHotkeysCount } = $$props;
|
||
let inputIsFocused = false;
|
||
let { FilterSettings } = $$props;
|
||
let { keyboardListenerIsActive = false } = $$props;
|
||
let filterIsOpen = false;
|
||
let refreshIsActive = false;
|
||
|
||
const ClearSearch = () => {
|
||
if (search === '') {
|
||
set_store_value(activeModifiers, $activeModifiers = [], $activeModifiers);
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
inputHTML.focus();
|
||
} else {
|
||
$$invalidate(1, search = '');
|
||
inputHTML.focus();
|
||
}
|
||
};
|
||
|
||
const ActivateKeyboardListener = () => {
|
||
$$invalidate(3, keyboardListenerIsActive = !keyboardListenerIsActive);
|
||
inputHTML.focus();
|
||
};
|
||
|
||
// EVENT DISPATHCHERs
|
||
const dispatch = createEventDispatcher();
|
||
|
||
// 1. refresh commands
|
||
function sendRefreshCommands() {
|
||
$$invalidate(9, refreshIsActive = true);
|
||
|
||
// set animation timeout
|
||
setTimeout(
|
||
() => {
|
||
$$invalidate(9, refreshIsActive = false);
|
||
},
|
||
1000
|
||
);
|
||
|
||
dispatch('refresh-commands');
|
||
}
|
||
|
||
function dispatchFeaturedFirstOptionTriggered() {
|
||
dispatch('featured-first-option-triggered');
|
||
}
|
||
|
||
// on focus modifier keydown event add to activeSearchModifiers array
|
||
// if modifier is already in array remove it
|
||
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState
|
||
const onModifierKeyDown = e => {
|
||
// edit modifiers
|
||
function pushModifier(modifier) {
|
||
if (!$activeModifiers.includes(modifier)) {
|
||
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers, modifier], $activeModifiers);
|
||
}
|
||
}
|
||
|
||
function spliceModifier(modifier) {
|
||
// splice modifier from activeSearchModifiers array
|
||
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(activeModifier => activeModifier !== modifier), $activeModifiers);
|
||
}
|
||
|
||
if (keyboardListenerIsActive && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'))) {
|
||
switch (e.key) {
|
||
case 'Shift':
|
||
if ($activeModifiers.includes('Shift')) {
|
||
spliceModifier('Shift');
|
||
} else {
|
||
pushModifier('Shift');
|
||
}
|
||
break;
|
||
case 'Alt':
|
||
if ($activeModifiers.includes('Alt')) {
|
||
spliceModifier('Alt');
|
||
} else {
|
||
pushModifier('Alt');
|
||
}
|
||
break;
|
||
case 'Meta':
|
||
// OSX ONLY
|
||
if ($activeModifiers.includes('Meta')) {
|
||
spliceModifier('Meta');
|
||
} else {
|
||
pushModifier('Meta');
|
||
}
|
||
break;
|
||
case 'Control':
|
||
if ($activeModifiers.includes('Ctrl')) {
|
||
spliceModifier('Ctrl');
|
||
} else {
|
||
pushModifier('Ctrl');
|
||
}
|
||
break;
|
||
default:
|
||
// TODO: triggers if two modifiers are pressed at the same time
|
||
console.log('unknown modifier: ', e.key);
|
||
console.log('please report this to the developer');
|
||
break;
|
||
}
|
||
|
||
// return to stop event propagation
|
||
return;
|
||
} else if (e.key === 'Escape') {
|
||
if (keyboardListenerIsActive) {
|
||
$$invalidate(3, keyboardListenerIsActive = false);
|
||
} else if (keyboardListenerIsActive === false) {
|
||
inputHTML.blur();
|
||
}
|
||
} else if (e.key === 'Backspace') {
|
||
// TODO clear activeSearchKey
|
||
if (keyboardListenerIsActive === true && $activeKey !== 'Backspace') {
|
||
e.preventDefault();
|
||
set_store_value(activeKey, $activeKey = 'Backspace', $activeKey);
|
||
} else if (keyboardListenerIsActive === true && $activeKey === 'Backspace') {
|
||
e.preventDefault();
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
} else if (keyboardListenerIsActive === false) {
|
||
if (search === '' || inputHTML.selectionStart === 0) {
|
||
if ($activeKey !== '') {
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
} else if ($activeKey === '' && $activeModifiers.length > 0) {
|
||
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers.slice(0, $activeModifiers.length - 1)], $activeModifiers);
|
||
}
|
||
}
|
||
}
|
||
} else if (e.key === 'Meta') {
|
||
e.preventDefault();
|
||
} else if (keyboardListenerIsActive === true) {
|
||
// @ts-ignore
|
||
let clickedKeyJS = JavaSciptKeyCodes[e.keyCode];
|
||
|
||
if (clickedKeyJS.Key !== $activeKey) {
|
||
e.preventDefault();
|
||
|
||
if (clickedKeyJS.Code === 'Numpad' + clickedKeyJS.Key) {
|
||
set_store_value(activeKey, $activeKey = clickedKeyJS.Code, $activeKey);
|
||
} else {
|
||
set_store_value(activeKey, $activeKey = clickedKeyJS.Key, $activeKey);
|
||
}
|
||
} else if (clickedKeyJS.Key === $activeKey || clickedKeyJS.Code === $activeKey) {
|
||
e.preventDefault();
|
||
|
||
if ($activeKey === clickedKeyJS.Code) {
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
} else if ($activeKey === clickedKeyJS.Key) {
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
}
|
||
} else {
|
||
!(e.keyCode in JavaSciptKeyCodes)
|
||
? console.log('unknown key: ', JavaSciptKeyCodes[e.keyCode])
|
||
: console.log('unknown key: ', e.key);
|
||
}
|
||
}
|
||
};
|
||
|
||
const click_handler = modifier => {
|
||
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(activeModifier => activeModifier !== modifier), $activeModifiers);
|
||
inputHTML.focus();
|
||
};
|
||
|
||
const click_handler_1 = () => set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
|
||
function input_input_handler() {
|
||
search = this.value;
|
||
$$invalidate(1, search);
|
||
}
|
||
|
||
function input_binding($$value) {
|
||
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
|
||
inputHTML = $$value;
|
||
$$invalidate(0, inputHTML);
|
||
});
|
||
}
|
||
|
||
const focus_handler = () => $$invalidate(7, inputIsFocused = true);
|
||
const blur_handler = () => $$invalidate(7, inputIsFocused = false);
|
||
|
||
const longpress_start_handler = () => {
|
||
inputHTML.focus();
|
||
$$invalidate(3, keyboardListenerIsActive = true);
|
||
};
|
||
|
||
const longpress_end_handler = () => {
|
||
$$invalidate(3, keyboardListenerIsActive = false);
|
||
};
|
||
|
||
const click_handler_2 = () => {
|
||
// console.log('filter: ', filterIsOpen)
|
||
$$invalidate(8, filterIsOpen = !filterIsOpen);
|
||
};
|
||
|
||
function input0_change_handler() {
|
||
FilterSettings.FeaturedFirst = this.checked;
|
||
$$invalidate(2, FilterSettings);
|
||
}
|
||
|
||
function input1_change_handler() {
|
||
FilterSettings.StrictSearch = this.checked;
|
||
$$invalidate(2, FilterSettings);
|
||
}
|
||
|
||
const click_handler_3 = () => {
|
||
$$invalidate(2, FilterSettings.StrictSearch = !FilterSettings.StrictSearch, FilterSettings);
|
||
plugin.saveSettings();
|
||
sendRefreshCommands();
|
||
};
|
||
|
||
function input2_change_handler() {
|
||
FilterSettings.HighlightCustom = this.checked;
|
||
$$invalidate(2, FilterSettings);
|
||
}
|
||
|
||
const click_handler_4 = () => {
|
||
$$invalidate(2, FilterSettings.HighlightCustom = !FilterSettings.HighlightCustom, FilterSettings);
|
||
plugin.saveSettings();
|
||
};
|
||
|
||
function input3_change_handler() {
|
||
FilterSettings.HighlightDuplicates = this.checked;
|
||
$$invalidate(2, FilterSettings);
|
||
}
|
||
|
||
const click_handler_5 = () => {
|
||
$$invalidate(2, FilterSettings.HighlightDuplicates = !FilterSettings.HighlightDuplicates, FilterSettings);
|
||
plugin.saveSettings();
|
||
};
|
||
|
||
function input4_change_handler() {
|
||
FilterSettings.DisplayIDs = this.checked;
|
||
$$invalidate(2, FilterSettings);
|
||
}
|
||
|
||
const click_handler_6 = () => {
|
||
$$invalidate(2, FilterSettings.DisplayIDs = !FilterSettings.DisplayIDs, FilterSettings);
|
||
plugin.saveSettings();
|
||
};
|
||
|
||
const clickOutside_function = () => // await timeout 40ms
|
||
setTimeout(
|
||
() => {
|
||
if (filterIsOpen) {
|
||
$$invalidate(8, filterIsOpen = false);
|
||
}
|
||
},
|
||
40
|
||
);
|
||
|
||
$$self.$$set = $$props => {
|
||
if ('plugin' in $$props) $$invalidate(4, plugin = $$props.plugin);
|
||
if ('inputHTML' in $$props) $$invalidate(0, inputHTML = $$props.inputHTML);
|
||
if ('search' in $$props) $$invalidate(1, search = $$props.search);
|
||
if ('searchCommandsCount' in $$props) $$invalidate(5, searchCommandsCount = $$props.searchCommandsCount);
|
||
if ('searchHotkeysCount' in $$props) $$invalidate(6, searchHotkeysCount = $$props.searchHotkeysCount);
|
||
if ('FilterSettings' in $$props) $$invalidate(2, FilterSettings = $$props.FilterSettings);
|
||
if ('keyboardListenerIsActive' in $$props) $$invalidate(3, keyboardListenerIsActive = $$props.keyboardListenerIsActive);
|
||
};
|
||
|
||
return [
|
||
inputHTML,
|
||
search,
|
||
FilterSettings,
|
||
keyboardListenerIsActive,
|
||
plugin,
|
||
searchCommandsCount,
|
||
searchHotkeysCount,
|
||
inputIsFocused,
|
||
filterIsOpen,
|
||
refreshIsActive,
|
||
$activeKey,
|
||
$activeModifiers,
|
||
ClearSearch,
|
||
ActivateKeyboardListener,
|
||
sendRefreshCommands,
|
||
dispatchFeaturedFirstOptionTriggered,
|
||
onModifierKeyDown,
|
||
click_handler,
|
||
click_handler_1,
|
||
input_input_handler,
|
||
input_binding,
|
||
focus_handler,
|
||
blur_handler,
|
||
longpress_start_handler,
|
||
longpress_end_handler,
|
||
click_handler_2,
|
||
input0_change_handler,
|
||
input1_change_handler,
|
||
click_handler_3,
|
||
input2_change_handler,
|
||
click_handler_4,
|
||
input3_change_handler,
|
||
click_handler_5,
|
||
input4_change_handler,
|
||
click_handler_6,
|
||
clickOutside_function
|
||
];
|
||
}
|
||
|
||
class SearchMenu extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
|
||
init(
|
||
this,
|
||
options,
|
||
instance$2,
|
||
create_fragment$2,
|
||
safe_not_equal,
|
||
{
|
||
plugin: 4,
|
||
inputHTML: 0,
|
||
search: 1,
|
||
searchCommandsCount: 5,
|
||
searchHotkeysCount: 6,
|
||
FilterSettings: 2,
|
||
keyboardListenerIsActive: 3
|
||
},
|
||
null,
|
||
[-1, -1]
|
||
);
|
||
}
|
||
}
|
||
|
||
/* src\Components\CommandsList.svelte generated by Svelte v3.49.0 */
|
||
|
||
function get_each_context(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[8] = list[i];
|
||
return child_ctx;
|
||
}
|
||
|
||
function get_each_context_1(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[11] = list[i];
|
||
return child_ctx;
|
||
}
|
||
|
||
// (64:10) {#if settings.filterSettings.DisplayIDs}
|
||
function create_if_block_1(ctx) {
|
||
let small;
|
||
let t_value = /*cmdEntry*/ ctx[8].id + "";
|
||
let t;
|
||
|
||
return {
|
||
c() {
|
||
small = element("small");
|
||
t = text(t_value);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, small, anchor);
|
||
append(small, t);
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*cmdEntry*/ ctx[8].id + "")) set_data(t, t_value);
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(small);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (81:14) {:else}
|
||
function create_else_block(ctx) {
|
||
let span;
|
||
let t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "";
|
||
let t;
|
||
|
||
return {
|
||
c() {
|
||
span = element("span");
|
||
t = text(t_value);
|
||
attr(span, "class", "kbanalizer-setting-hotkey setting-hotkey");
|
||
toggle_class(span, "is-customized", /*hotkey*/ ctx[11].isCustom && /*settings*/ ctx[1].filterSettings.HighlightCustom);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, span, anchor);
|
||
append(span, t);
|
||
},
|
||
p(ctx, dirty) {
|
||
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "")) set_data(t, t_value);
|
||
|
||
if (dirty & /*visibleCommands, settings*/ 3) {
|
||
toggle_class(span, "is-customized", /*hotkey*/ ctx[11].isCustom && /*settings*/ ctx[1].filterSettings.HighlightCustom);
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(span);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (73:14) {#if isHotkeyDuplicate(cmdEntry.id, hotkey)}
|
||
function create_if_block(ctx) {
|
||
let span;
|
||
let t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "";
|
||
let t;
|
||
let mounted;
|
||
let dispose;
|
||
|
||
function click_handler_1() {
|
||
return /*click_handler_1*/ ctx[6](/*hotkey*/ ctx[11]);
|
||
}
|
||
|
||
return {
|
||
c() {
|
||
span = element("span");
|
||
t = text(t_value);
|
||
attr(span, "class", "kbanalizer-setting-hotkey setting-hotkey is-duplicate");
|
||
toggle_class(span, "is-duplicate", /*settings*/ ctx[1].filterSettings.HighlightDuplicates);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, span, anchor);
|
||
append(span, t);
|
||
|
||
if (!mounted) {
|
||
dispose = listen(span, "click", click_handler_1);
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(new_ctx, dirty) {
|
||
ctx = new_ctx;
|
||
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "")) set_data(t, t_value);
|
||
|
||
if (dirty & /*settings*/ 2) {
|
||
toggle_class(span, "is-duplicate", /*settings*/ ctx[1].filterSettings.HighlightDuplicates);
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(span);
|
||
mounted = false;
|
||
dispose();
|
||
}
|
||
};
|
||
}
|
||
|
||
// (72:12) {#each cmdEntry.hotkeys as hotkey}
|
||
function create_each_block_1(ctx) {
|
||
let show_if;
|
||
let if_block_anchor;
|
||
|
||
function select_block_type(ctx, dirty) {
|
||
if (dirty & /*visibleCommands*/ 1) show_if = null;
|
||
if (show_if == null) show_if = !!isHotkeyDuplicate(/*cmdEntry*/ ctx[8].id, /*hotkey*/ ctx[11]);
|
||
if (show_if) return create_if_block;
|
||
return create_else_block;
|
||
}
|
||
|
||
let current_block_type = select_block_type(ctx, -1);
|
||
let if_block = current_block_type(ctx);
|
||
|
||
return {
|
||
c() {
|
||
if_block.c();
|
||
if_block_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
if_block.m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
},
|
||
p(ctx, dirty) {
|
||
if (current_block_type === (current_block_type = select_block_type(ctx, dirty)) && if_block) {
|
||
if_block.p(ctx, dirty);
|
||
} else {
|
||
if_block.d(1);
|
||
if_block = current_block_type(ctx);
|
||
|
||
if (if_block) {
|
||
if_block.c();
|
||
if_block.m(if_block_anchor.parentNode, if_block_anchor);
|
||
}
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if_block.d(detaching);
|
||
if (detaching) detach(if_block_anchor);
|
||
}
|
||
};
|
||
}
|
||
|
||
// (42:4) {#each visibleCommands as cmdEntry (cmdEntry.id)}
|
||
function create_each_block(key_1, ctx) {
|
||
let div5;
|
||
let div2;
|
||
let div1;
|
||
let span0;
|
||
let t0_value = /*cmdEntry*/ ctx[8].pluginName + "";
|
||
let t0;
|
||
let t1;
|
||
let span1;
|
||
let t2_value = /*cmdEntry*/ ctx[8].cmdName + "";
|
||
let t2;
|
||
let t3;
|
||
let div0;
|
||
let staricon;
|
||
let t4;
|
||
let t5;
|
||
let div4;
|
||
let div3;
|
||
let t6;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
staricon = new StarIcon({ props: { size: 16 } });
|
||
|
||
function click_handler() {
|
||
return /*click_handler*/ ctx[5](/*cmdEntry*/ ctx[8]);
|
||
}
|
||
|
||
let if_block = /*settings*/ ctx[1].filterSettings.DisplayIDs && create_if_block_1(ctx);
|
||
let each_value_1 = /*cmdEntry*/ ctx[8].hotkeys;
|
||
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 {
|
||
key: key_1,
|
||
first: null,
|
||
c() {
|
||
div5 = element("div");
|
||
div2 = element("div");
|
||
div1 = element("div");
|
||
span0 = element("span");
|
||
t0 = text(t0_value);
|
||
t1 = space();
|
||
span1 = element("span");
|
||
t2 = text(t2_value);
|
||
t3 = space();
|
||
div0 = element("div");
|
||
create_component(staricon.$$.fragment);
|
||
t4 = space();
|
||
if (if_block) if_block.c();
|
||
t5 = space();
|
||
div4 = element("div");
|
||
div3 = element("div");
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
|
||
t6 = space();
|
||
attr(span0, "class", "suggestion-prefix");
|
||
attr(span1, "class", "command-name");
|
||
attr(div0, "class", "star-icon icon");
|
||
attr(div1, "class", "setting-item-name");
|
||
attr(div2, "class", "setting-item-info");
|
||
attr(div3, "class", "setting-command-hotkeys");
|
||
attr(div4, "class", "kbanalizer-setting-item-control setting-item-control");
|
||
attr(div5, "class", "kbanalizer-setting-item setting-item");
|
||
toggle_class(div5, "is-starred", /*settings*/ ctx[1].featuredCommandIDs.includes(/*cmdEntry*/ ctx[8].id));
|
||
this.first = div5;
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div5, anchor);
|
||
append(div5, div2);
|
||
append(div2, div1);
|
||
append(div1, span0);
|
||
append(span0, t0);
|
||
append(div1, t1);
|
||
append(div1, span1);
|
||
append(span1, t2);
|
||
append(div1, t3);
|
||
append(div1, div0);
|
||
mount_component(staricon, div0, null);
|
||
append(div2, t4);
|
||
if (if_block) if_block.m(div2, null);
|
||
append(div5, t5);
|
||
append(div5, div4);
|
||
append(div4, div3);
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(div3, null);
|
||
}
|
||
|
||
append(div5, t6);
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(span0, "click", /*sendPluginName*/ ctx[4]),
|
||
listen(div0, "click", click_handler)
|
||
];
|
||
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(new_ctx, dirty) {
|
||
ctx = new_ctx;
|
||
if ((!current || dirty & /*visibleCommands*/ 1) && t0_value !== (t0_value = /*cmdEntry*/ ctx[8].pluginName + "")) set_data(t0, t0_value);
|
||
if ((!current || dirty & /*visibleCommands*/ 1) && t2_value !== (t2_value = /*cmdEntry*/ ctx[8].cmdName + "")) set_data(t2, t2_value);
|
||
|
||
if (/*settings*/ ctx[1].filterSettings.DisplayIDs) {
|
||
if (if_block) {
|
||
if_block.p(ctx, dirty);
|
||
} else {
|
||
if_block = create_if_block_1(ctx);
|
||
if_block.c();
|
||
if_block.m(div2, null);
|
||
}
|
||
} else if (if_block) {
|
||
if_block.d(1);
|
||
if_block = null;
|
||
}
|
||
|
||
if (dirty & /*settings, dispatch, visibleCommands, renderHotkey, isHotkeyDuplicate*/ 15) {
|
||
each_value_1 = /*cmdEntry*/ ctx[8].hotkeys;
|
||
let i;
|
||
|
||
for (i = 0; i < each_value_1.length; i += 1) {
|
||
const child_ctx = get_each_context_1(ctx, 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(div3, null);
|
||
}
|
||
}
|
||
|
||
for (; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].d(1);
|
||
}
|
||
|
||
each_blocks.length = each_value_1.length;
|
||
}
|
||
|
||
if (dirty & /*settings, visibleCommands*/ 3) {
|
||
toggle_class(div5, "is-starred", /*settings*/ ctx[1].featuredCommandIDs.includes(/*cmdEntry*/ ctx[8].id));
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(staricon.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(staricon.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div5);
|
||
destroy_component(staricon);
|
||
if (if_block) if_block.d();
|
||
destroy_each(each_blocks, detaching);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
|
||
function create_fragment$1(ctx) {
|
||
let div1;
|
||
let div0;
|
||
let each_blocks = [];
|
||
let each_1_lookup = new Map();
|
||
let current;
|
||
let each_value = /*visibleCommands*/ ctx[0];
|
||
const get_key = ctx => /*cmdEntry*/ ctx[8].id;
|
||
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
let child_ctx = get_each_context(ctx, each_value, i);
|
||
let key = get_key(child_ctx);
|
||
each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
|
||
}
|
||
|
||
return {
|
||
c() {
|
||
div1 = element("div");
|
||
div0 = element("div");
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
|
||
attr(div0, "class", "hotkey-list-container");
|
||
attr(div1, "id", "hotkeys-wrapper");
|
||
attr(div1, "class", "markdown-preview-sizer markdown-preview-section hotkey-settings-container");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div1, anchor);
|
||
append(div1, div0);
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].m(div0, null);
|
||
}
|
||
|
||
current = true;
|
||
},
|
||
p(ctx, [dirty]) {
|
||
if (dirty & /*settings, visibleCommands, dispatch, renderHotkey, isHotkeyDuplicate, sendPluginName*/ 31) {
|
||
each_value = /*visibleCommands*/ ctx[0];
|
||
group_outros();
|
||
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block, null, get_each_context);
|
||
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) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
transition_out(each_blocks[i]);
|
||
}
|
||
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div1);
|
||
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].d();
|
||
}
|
||
}
|
||
};
|
||
}
|
||
|
||
function instance$1($$self, $$props, $$invalidate) {
|
||
let { visibleCommands } = $$props;
|
||
let { settings } = $$props;
|
||
|
||
function renderHotkey(hotkey) {
|
||
let modifiersString = hotkey.modifiers.length !== 0
|
||
? getConvertedModifiers(sortModifiers(hotkey.modifiers)).join(' + ') + ' + '
|
||
: '';
|
||
|
||
let key = hotkey.key in SpecialSymbols
|
||
? SpecialSymbols[hotkey.key]
|
||
: hotkey.key.length === 1
|
||
? hotkey.key.toUpperCase()
|
||
: hotkey.key;
|
||
|
||
return modifiersString + key;
|
||
}
|
||
|
||
const dispatch = createEventDispatcher();
|
||
|
||
function sendPluginName(e) {
|
||
const clicked = e.target.innerHTML;
|
||
dispatch('plugin-name-clicked', clicked);
|
||
}
|
||
|
||
const click_handler = cmdEntry => {
|
||
dispatch('star-clicked', cmdEntry.id);
|
||
};
|
||
|
||
const click_handler_1 = hotkey => dispatch('duplicate-hotkey-clicked', hotkey);
|
||
|
||
$$self.$$set = $$props => {
|
||
if ('visibleCommands' in $$props) $$invalidate(0, visibleCommands = $$props.visibleCommands);
|
||
if ('settings' in $$props) $$invalidate(1, settings = $$props.settings);
|
||
};
|
||
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & /*settings*/ 2) ;
|
||
};
|
||
|
||
return [
|
||
visibleCommands,
|
||
settings,
|
||
renderHotkey,
|
||
dispatch,
|
||
sendPluginName,
|
||
click_handler,
|
||
click_handler_1
|
||
];
|
||
}
|
||
|
||
class CommandsList extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance$1, create_fragment$1, safe_not_equal, { visibleCommands: 0, settings: 1 });
|
||
}
|
||
}
|
||
|
||
/* src\Components\KeyboardComponent.svelte generated by Svelte v3.49.0 */
|
||
|
||
function create_fragment(ctx) {
|
||
let div2;
|
||
let div0;
|
||
let keyboardlayout;
|
||
let updating_KeyboardObject;
|
||
let updating_KeyboardStateDict;
|
||
let updating_visibleCommands;
|
||
let t0;
|
||
let div1;
|
||
let searchmenu;
|
||
let updating_inputHTML;
|
||
let updating_search;
|
||
let updating_searchCommandsCount;
|
||
let updating_searchHotkeysCount;
|
||
let updating_keyboardListenerIsActive;
|
||
let updating_FilterSettings;
|
||
let updating_plugin;
|
||
let t1;
|
||
let commandslist;
|
||
let updating_visibleCommands_1;
|
||
let updating_settings;
|
||
let div2_class_value;
|
||
let div2_resize_listener;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
|
||
function keyboardlayout_KeyboardObject_binding(value) {
|
||
/*keyboardlayout_KeyboardObject_binding*/ ctx[25](value);
|
||
}
|
||
|
||
function keyboardlayout_KeyboardStateDict_binding(value) {
|
||
/*keyboardlayout_KeyboardStateDict_binding*/ ctx[26](value);
|
||
}
|
||
|
||
function keyboardlayout_visibleCommands_binding(value) {
|
||
/*keyboardlayout_visibleCommands_binding*/ ctx[27](value);
|
||
}
|
||
|
||
let keyboardlayout_props = {};
|
||
|
||
if (/*KeyboardObject*/ ctx[9] !== void 0) {
|
||
keyboardlayout_props.KeyboardObject = /*KeyboardObject*/ ctx[9];
|
||
}
|
||
|
||
if (/*KeyboardStateDict*/ ctx[10] !== void 0) {
|
||
keyboardlayout_props.KeyboardStateDict = /*KeyboardStateDict*/ ctx[10];
|
||
}
|
||
|
||
if (/*visibleCommands*/ ctx[4] !== void 0) {
|
||
keyboardlayout_props.visibleCommands = /*visibleCommands*/ ctx[4];
|
||
}
|
||
|
||
keyboardlayout = new KeyboardLayout({ props: keyboardlayout_props });
|
||
binding_callbacks.push(() => bind(keyboardlayout, 'KeyboardObject', keyboardlayout_KeyboardObject_binding));
|
||
binding_callbacks.push(() => bind(keyboardlayout, 'KeyboardStateDict', keyboardlayout_KeyboardStateDict_binding));
|
||
binding_callbacks.push(() => bind(keyboardlayout, 'visibleCommands', keyboardlayout_visibleCommands_binding));
|
||
|
||
function searchmenu_inputHTML_binding(value) {
|
||
/*searchmenu_inputHTML_binding*/ ctx[28](value);
|
||
}
|
||
|
||
function searchmenu_search_binding(value) {
|
||
/*searchmenu_search_binding*/ ctx[29](value);
|
||
}
|
||
|
||
function searchmenu_searchCommandsCount_binding(value) {
|
||
/*searchmenu_searchCommandsCount_binding*/ ctx[30](value);
|
||
}
|
||
|
||
function searchmenu_searchHotkeysCount_binding(value) {
|
||
/*searchmenu_searchHotkeysCount_binding*/ ctx[31](value);
|
||
}
|
||
|
||
function searchmenu_keyboardListenerIsActive_binding(value) {
|
||
/*searchmenu_keyboardListenerIsActive_binding*/ ctx[32](value);
|
||
}
|
||
|
||
function searchmenu_FilterSettings_binding(value) {
|
||
/*searchmenu_FilterSettings_binding*/ ctx[33](value);
|
||
}
|
||
|
||
function searchmenu_plugin_binding(value) {
|
||
/*searchmenu_plugin_binding*/ ctx[34](value);
|
||
}
|
||
|
||
let searchmenu_props = {};
|
||
|
||
if (/*input*/ ctx[7] !== void 0) {
|
||
searchmenu_props.inputHTML = /*input*/ ctx[7];
|
||
}
|
||
|
||
if (/*search*/ ctx[3] !== void 0) {
|
||
searchmenu_props.search = /*search*/ ctx[3];
|
||
}
|
||
|
||
if (/*searchCommandsCount*/ ctx[12] !== void 0) {
|
||
searchmenu_props.searchCommandsCount = /*searchCommandsCount*/ ctx[12];
|
||
}
|
||
|
||
if (/*searchHotkeysCount*/ ctx[11] !== void 0) {
|
||
searchmenu_props.searchHotkeysCount = /*searchHotkeysCount*/ ctx[11];
|
||
}
|
||
|
||
if (/*keyboardListenerIsActive*/ ctx[8] !== void 0) {
|
||
searchmenu_props.keyboardListenerIsActive = /*keyboardListenerIsActive*/ ctx[8];
|
||
}
|
||
|
||
if (/*settings*/ ctx[1].filterSettings !== void 0) {
|
||
searchmenu_props.FilterSettings = /*settings*/ ctx[1].filterSettings;
|
||
}
|
||
|
||
if (/*plugin*/ ctx[0] !== void 0) {
|
||
searchmenu_props.plugin = /*plugin*/ ctx[0];
|
||
}
|
||
|
||
searchmenu = new SearchMenu({ props: searchmenu_props });
|
||
binding_callbacks.push(() => bind(searchmenu, 'inputHTML', searchmenu_inputHTML_binding));
|
||
binding_callbacks.push(() => bind(searchmenu, 'search', searchmenu_search_binding));
|
||
binding_callbacks.push(() => bind(searchmenu, 'searchCommandsCount', searchmenu_searchCommandsCount_binding));
|
||
binding_callbacks.push(() => bind(searchmenu, 'searchHotkeysCount', searchmenu_searchHotkeysCount_binding));
|
||
binding_callbacks.push(() => bind(searchmenu, 'keyboardListenerIsActive', searchmenu_keyboardListenerIsActive_binding));
|
||
binding_callbacks.push(() => bind(searchmenu, 'FilterSettings', searchmenu_FilterSettings_binding));
|
||
binding_callbacks.push(() => bind(searchmenu, 'plugin', searchmenu_plugin_binding));
|
||
searchmenu.$on("featured-first-option-triggered", /*handleFeaturedFirstOptionClicked*/ ctx[15]);
|
||
searchmenu.$on("refresh-commands", /*handleRefreshClicked*/ ctx[18]);
|
||
|
||
function commandslist_visibleCommands_binding(value) {
|
||
/*commandslist_visibleCommands_binding*/ ctx[35](value);
|
||
}
|
||
|
||
function commandslist_settings_binding(value) {
|
||
/*commandslist_settings_binding*/ ctx[36](value);
|
||
}
|
||
|
||
let commandslist_props = {};
|
||
|
||
if (/*visibleCommands*/ ctx[4] !== void 0) {
|
||
commandslist_props.visibleCommands = /*visibleCommands*/ ctx[4];
|
||
}
|
||
|
||
if (/*settings*/ ctx[1] !== void 0) {
|
||
commandslist_props.settings = /*settings*/ ctx[1];
|
||
}
|
||
|
||
commandslist = new CommandsList({ props: commandslist_props });
|
||
binding_callbacks.push(() => bind(commandslist, 'visibleCommands', commandslist_visibleCommands_binding));
|
||
binding_callbacks.push(() => bind(commandslist, 'settings', commandslist_settings_binding));
|
||
commandslist.$on("star-clicked", /*handleStarIconClicked*/ ctx[17]);
|
||
commandslist.$on("duplicate-hotkey-clicked", /*handleDuplicateHotkeyClicked*/ ctx[16]);
|
||
commandslist.$on("plugin-name-clicked", /*handlePluginNameClicked*/ ctx[14]);
|
||
|
||
return {
|
||
c() {
|
||
div2 = element("div");
|
||
div0 = element("div");
|
||
create_component(keyboardlayout.$$.fragment);
|
||
t0 = space();
|
||
div1 = element("div");
|
||
create_component(searchmenu.$$.fragment);
|
||
t1 = space();
|
||
create_component(commandslist.$$.fragment);
|
||
attr(div0, "class", "");
|
||
attr(div0, "id", "keyboard-preview-view");
|
||
attr(div1, "class", "shortcuts-wrapper");
|
||
attr(div2, "id", "keyboard-component");
|
||
attr(div2, "class", div2_class_value = "" + (/*viewMode*/ ctx[6] + " " + (/*viewMode*/ ctx[6] === 'xs' ? 'is-mobile' : '')));
|
||
add_render_callback(() => /*div2_elementresize_handler*/ ctx[37].call(div2));
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div2, anchor);
|
||
append(div2, div0);
|
||
mount_component(keyboardlayout, div0, null);
|
||
append(div2, t0);
|
||
append(div2, div1);
|
||
mount_component(searchmenu, div1, null);
|
||
append(div1, t1);
|
||
mount_component(commandslist, div1, null);
|
||
div2_resize_listener = add_resize_listener(div2, /*div2_elementresize_handler*/ ctx[37].bind(div2));
|
||
current = true;
|
||
|
||
if (!mounted) {
|
||
dispose = [
|
||
action_destroyer(watchResize.call(null, div2, /*handleResize*/ ctx[19])),
|
||
listen(div2, "mouseenter", /*mouseenter_handler*/ ctx[38]),
|
||
listen(div2, "mouseleave", /*mouseleave_handler*/ ctx[39])
|
||
];
|
||
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx, dirty) {
|
||
const keyboardlayout_changes = {};
|
||
|
||
if (!updating_KeyboardObject && dirty[0] & /*KeyboardObject*/ 512) {
|
||
updating_KeyboardObject = true;
|
||
keyboardlayout_changes.KeyboardObject = /*KeyboardObject*/ ctx[9];
|
||
add_flush_callback(() => updating_KeyboardObject = false);
|
||
}
|
||
|
||
if (!updating_KeyboardStateDict && dirty[0] & /*KeyboardStateDict*/ 1024) {
|
||
updating_KeyboardStateDict = true;
|
||
keyboardlayout_changes.KeyboardStateDict = /*KeyboardStateDict*/ ctx[10];
|
||
add_flush_callback(() => updating_KeyboardStateDict = false);
|
||
}
|
||
|
||
if (!updating_visibleCommands && dirty[0] & /*visibleCommands*/ 16) {
|
||
updating_visibleCommands = true;
|
||
keyboardlayout_changes.visibleCommands = /*visibleCommands*/ ctx[4];
|
||
add_flush_callback(() => updating_visibleCommands = false);
|
||
}
|
||
|
||
keyboardlayout.$set(keyboardlayout_changes);
|
||
const searchmenu_changes = {};
|
||
|
||
if (!updating_inputHTML && dirty[0] & /*input*/ 128) {
|
||
updating_inputHTML = true;
|
||
searchmenu_changes.inputHTML = /*input*/ ctx[7];
|
||
add_flush_callback(() => updating_inputHTML = false);
|
||
}
|
||
|
||
if (!updating_search && dirty[0] & /*search*/ 8) {
|
||
updating_search = true;
|
||
searchmenu_changes.search = /*search*/ ctx[3];
|
||
add_flush_callback(() => updating_search = false);
|
||
}
|
||
|
||
if (!updating_searchCommandsCount && dirty[0] & /*searchCommandsCount*/ 4096) {
|
||
updating_searchCommandsCount = true;
|
||
searchmenu_changes.searchCommandsCount = /*searchCommandsCount*/ ctx[12];
|
||
add_flush_callback(() => updating_searchCommandsCount = false);
|
||
}
|
||
|
||
if (!updating_searchHotkeysCount && dirty[0] & /*searchHotkeysCount*/ 2048) {
|
||
updating_searchHotkeysCount = true;
|
||
searchmenu_changes.searchHotkeysCount = /*searchHotkeysCount*/ ctx[11];
|
||
add_flush_callback(() => updating_searchHotkeysCount = false);
|
||
}
|
||
|
||
if (!updating_keyboardListenerIsActive && dirty[0] & /*keyboardListenerIsActive*/ 256) {
|
||
updating_keyboardListenerIsActive = true;
|
||
searchmenu_changes.keyboardListenerIsActive = /*keyboardListenerIsActive*/ ctx[8];
|
||
add_flush_callback(() => updating_keyboardListenerIsActive = false);
|
||
}
|
||
|
||
if (!updating_FilterSettings && dirty[0] & /*settings*/ 2) {
|
||
updating_FilterSettings = true;
|
||
searchmenu_changes.FilterSettings = /*settings*/ ctx[1].filterSettings;
|
||
add_flush_callback(() => updating_FilterSettings = false);
|
||
}
|
||
|
||
if (!updating_plugin && dirty[0] & /*plugin*/ 1) {
|
||
updating_plugin = true;
|
||
searchmenu_changes.plugin = /*plugin*/ ctx[0];
|
||
add_flush_callback(() => updating_plugin = false);
|
||
}
|
||
|
||
searchmenu.$set(searchmenu_changes);
|
||
const commandslist_changes = {};
|
||
|
||
if (!updating_visibleCommands_1 && dirty[0] & /*visibleCommands*/ 16) {
|
||
updating_visibleCommands_1 = true;
|
||
commandslist_changes.visibleCommands = /*visibleCommands*/ ctx[4];
|
||
add_flush_callback(() => updating_visibleCommands_1 = false);
|
||
}
|
||
|
||
if (!updating_settings && dirty[0] & /*settings*/ 2) {
|
||
updating_settings = true;
|
||
commandslist_changes.settings = /*settings*/ ctx[1];
|
||
add_flush_callback(() => updating_settings = false);
|
||
}
|
||
|
||
commandslist.$set(commandslist_changes);
|
||
|
||
if (!current || dirty[0] & /*viewMode*/ 64 && div2_class_value !== (div2_class_value = "" + (/*viewMode*/ ctx[6] + " " + (/*viewMode*/ ctx[6] === 'xs' ? 'is-mobile' : '')))) {
|
||
attr(div2, "class", div2_class_value);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current) return;
|
||
transition_in(keyboardlayout.$$.fragment, local);
|
||
transition_in(searchmenu.$$.fragment, local);
|
||
transition_in(commandslist.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(keyboardlayout.$$.fragment, local);
|
||
transition_out(searchmenu.$$.fragment, local);
|
||
transition_out(commandslist.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) detach(div2);
|
||
destroy_component(keyboardlayout);
|
||
destroy_component(searchmenu);
|
||
destroy_component(commandslist);
|
||
div2_resize_listener();
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
|
||
// sort commands by featured commands first
|
||
function sortByFeaturedFirst(cmds, featured) {
|
||
let sortedCmds = [];
|
||
let featuredCmds = [];
|
||
let otherCmds = [];
|
||
|
||
// sort commands by name when type is name
|
||
(cmds.forEach(cmd => {
|
||
if (featured.includes(cmd.id)) {
|
||
featuredCmds.push(cmd);
|
||
} else {
|
||
otherCmds.push(cmd);
|
||
}
|
||
}), sortedCmds = featuredCmds.concat(otherCmds));
|
||
|
||
return sortedCmds;
|
||
}
|
||
|
||
// function to update amount of hotkeys for all commands
|
||
function updateCommandsCount(array) {
|
||
return array.length;
|
||
}
|
||
|
||
// function to count hotkeys for all commands
|
||
function countHotkeys(array) {
|
||
let hotkeysCount = 0;
|
||
|
||
for (let command of array) {
|
||
hotkeysCount += command.hotkeys.length;
|
||
}
|
||
|
||
return hotkeysCount;
|
||
}
|
||
|
||
function instance($$self, $$props, $$invalidate) {
|
||
let visibleCommands;
|
||
let searchCommandsCount;
|
||
let searchHotkeysCount;
|
||
let $activeKey;
|
||
let $activeModifiers;
|
||
component_subscribe($$self, activeKey, $$value => $$invalidate(23, $activeKey = $$value));
|
||
component_subscribe($$self, activeModifiers, $$value => $$invalidate(24, $activeModifiers = $$value));
|
||
let { app } = $$props;
|
||
let { plugin } = $$props;
|
||
let { settings } = $$props;
|
||
let { view } = $$props;
|
||
let viewWidth;
|
||
let viewMode = 'desktop';
|
||
|
||
// INITIALIZE SEARCH MENU
|
||
let search = '';
|
||
|
||
let input;
|
||
let keyboardListenerIsActive = false;
|
||
|
||
// Implements Cmd+F functionality for focus on input field
|
||
// thanks to @Fevol - https://discord.com/channels/686053708261228577/840286264964022302/1005131941240115221
|
||
const view_scope = new obsidian.Scope(app.scope);
|
||
|
||
view_scope.register(['Mod'], 'f', e => {
|
||
if (e.ctrlKey && e.key === 'f') {
|
||
if (input === document.activeElement && keyboardListenerIsActive === false) {
|
||
$$invalidate(8, keyboardListenerIsActive = true);
|
||
} else if (input === document.activeElement && keyboardListenerIsActive === true) {
|
||
$$invalidate(8, keyboardListenerIsActive = false);
|
||
} else {
|
||
input.focus();
|
||
}
|
||
|
||
return false;
|
||
}
|
||
});
|
||
|
||
let kbLayout_main = mainSectionQwerty;
|
||
let kbLayout_other = keyboardOther;
|
||
let kbLayout_num = keyboardNum;
|
||
let KeyboardObject = [kbLayout_main, kbLayout_other, kbLayout_num]; // kbLayout_num //Keyboard
|
||
let KeyboardStateDict;
|
||
|
||
// COMMANDS LIST
|
||
let commands = getHotkeysV2(app);
|
||
|
||
// 0. prepare commands array from commands object
|
||
let commandsArray = Object.keys(commands).map(key => commands[key]);
|
||
|
||
// 1. refresh commands array
|
||
function refreshCommandsList() {
|
||
$$invalidate(21, commands = getHotkeysV2(app));
|
||
$$invalidate(22, commandsArray = Object.keys(commands).map(key => commands[key]));
|
||
}
|
||
|
||
function triggerRenderCommands() {
|
||
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
|
||
}
|
||
|
||
// filter commands array by search string
|
||
function filterCommandsArray(cmds, search, activeSearchModifiers, activeSearchKey) {
|
||
refreshCommandsList();
|
||
let filteredCmds = [];
|
||
|
||
// function to filter commands by search string
|
||
function filterByName(command) {
|
||
let CommandName = command.pluginName.toLocaleLowerCase() + ' ' + command.cmdName.toLowerCase();
|
||
|
||
// get array of search words and search in fullName
|
||
let searchWords = search.toLocaleLowerCase().split(' ').filter(word => word.length > 0);
|
||
|
||
// return true if all search word are in fullName, hotkeys or key
|
||
return searchWords.every(word => {
|
||
return CommandName.includes(word) || command.hotkeys.some(hotkey => {
|
||
return hotkey.key.toLocaleLowerCase().includes(word) || getConvertedModifiers(hotkey.modifiers).some(modifier => modifier.toLocaleLowerCase().includes(word));
|
||
});
|
||
});
|
||
}
|
||
|
||
// filter commands by activeSearchModifiers
|
||
// if no activeSearchModifiers, filter by all commands
|
||
function filterByModifiers(command, activeModifiers, strictHotkeyChecker) {
|
||
if (strictHotkeyChecker === false) {
|
||
return command.hotkeys.some(hotkey => {
|
||
return activeModifiers.every(modifier => {
|
||
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
|
||
});
|
||
});
|
||
} else if (strictHotkeyChecker === true) {
|
||
command.hotkeys = command.hotkeys.filter(hotkey => {
|
||
if (hotkey.modifiers.length === activeModifiers.length && activeModifiers.every(modifier => {
|
||
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
|
||
})) {
|
||
return true;
|
||
}
|
||
});
|
||
|
||
return command.hotkeys.every(hotkey => {
|
||
return activeModifiers.every(modifier => {
|
||
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
|
||
});
|
||
});
|
||
}
|
||
}
|
||
|
||
// filter commands by activeSearchModifiers
|
||
function filterByKey(command) {
|
||
return command.hotkeys.some(hotkey => {
|
||
return hotkey.key.toLocaleLowerCase() === $activeKey.toLocaleLowerCase();
|
||
});
|
||
}
|
||
|
||
filteredCmds = cmds.filter(command => {
|
||
return filterByName(command) && (activeSearchModifiers.length === 0 || filterByModifiers(command, activeSearchModifiers, settings.filterSettings.StrictSearch)) && (activeSearchKey === '' || filterByKey(command));
|
||
}).sort((a, b) => {
|
||
return a.pluginName.localeCompare(b.pluginName);
|
||
}).filter(command => command.hotkeys.length > 0);
|
||
|
||
if (settings.filterSettings.FeaturedFirst) {
|
||
filteredCmds = sortByFeaturedFirst(filteredCmds, settings.featuredCommandIDs);
|
||
}
|
||
|
||
return filteredCmds;
|
||
}
|
||
|
||
// HANDLE COMPONENT EVENTS
|
||
// 1. if plugin name clicked inside commands list
|
||
function handlePluginNameClicked(event) {
|
||
let pluginName = event.detail;
|
||
|
||
if (search === '' || search === undefined) {
|
||
// scroll to input field
|
||
input.focus();
|
||
|
||
$$invalidate(3, search = pluginName);
|
||
} else if (search.startsWith(pluginName)) {
|
||
$$invalidate(3, search = search.replace(pluginName, ''));
|
||
} else {
|
||
$$invalidate(3, search = pluginName + search);
|
||
}
|
||
}
|
||
|
||
function handleFeaturedFirstOptionClicked(event) {
|
||
$$invalidate(1, settings.filterSettings.FeaturedFirst = !settings.filterSettings.FeaturedFirst, settings);
|
||
plugin.saveSettings();
|
||
triggerRenderCommands();
|
||
}
|
||
|
||
function handleDuplicateHotkeyClicked(event) {
|
||
let duplicativeHotkey = event.detail;
|
||
let duplicativeModifiers = getConvertedModifiers(duplicativeHotkey.modifiers);
|
||
let duplicativeKey = duplicativeHotkey.key;
|
||
|
||
// check if modifiers and key already active search then remove them
|
||
if ($activeModifiers.every(modifier => {
|
||
return duplicativeModifiers.includes(modifier);
|
||
}) && $activeKey.toLocaleLowerCase() === duplicativeKey.toLocaleLowerCase()) {
|
||
set_store_value(activeModifiers, $activeModifiers = [], $activeModifiers);
|
||
set_store_value(activeKey, $activeKey = '', $activeKey);
|
||
} else {
|
||
set_store_value(activeModifiers, $activeModifiers = duplicativeModifiers, $activeModifiers);
|
||
set_store_value(activeKey, $activeKey = duplicativeKey, $activeKey);
|
||
$$invalidate(3, search = '');
|
||
}
|
||
}
|
||
|
||
function handleStarIconClicked(event) {
|
||
let pluginName = event.detail;
|
||
|
||
if (settings.featuredCommandIDs.includes(pluginName)) {
|
||
$$invalidate(1, settings.featuredCommandIDs = settings.featuredCommandIDs.filter(id => id !== pluginName), settings);
|
||
plugin.saveSettings();
|
||
} else {
|
||
// add pluginName to settings.featuredCommandIDs
|
||
settings.featuredCommandIDs.push(pluginName);
|
||
|
||
$$invalidate(1, settings);
|
||
plugin.saveSettings();
|
||
}
|
||
|
||
triggerRenderCommands();
|
||
}
|
||
|
||
// 2. if refresh button is clicked
|
||
function handleRefreshClicked() {
|
||
refreshCommandsList();
|
||
}
|
||
|
||
// track resize and assign device classes to each width
|
||
function handleResize() {
|
||
if (viewWidth >= 1400) {
|
||
$$invalidate(6, viewMode = 'xxl');
|
||
} else if (viewWidth >= 1200 && viewWidth < 1400) {
|
||
$$invalidate(6, viewMode = 'xl');
|
||
} else if (viewWidth >= 992 && viewWidth < 1200) {
|
||
$$invalidate(6, viewMode = 'lg');
|
||
} else if (viewWidth >= 768 && viewWidth < 992) {
|
||
$$invalidate(6, viewMode = 'md');
|
||
} else if (viewWidth >= 576 && viewWidth < 768) {
|
||
$$invalidate(6, viewMode = 'sm');
|
||
} else if (viewWidth < 576) {
|
||
$$invalidate(6, viewMode = 'xs');
|
||
}
|
||
}
|
||
|
||
onMount(() => {
|
||
input.focus();
|
||
});
|
||
|
||
onDestroy(() => {
|
||
app.keymap.popScope(view_scope);
|
||
});
|
||
|
||
function keyboardlayout_KeyboardObject_binding(value) {
|
||
KeyboardObject = value;
|
||
$$invalidate(9, KeyboardObject);
|
||
}
|
||
|
||
function keyboardlayout_KeyboardStateDict_binding(value) {
|
||
KeyboardStateDict = value;
|
||
$$invalidate(10, KeyboardStateDict);
|
||
}
|
||
|
||
function keyboardlayout_visibleCommands_binding(value) {
|
||
visibleCommands = value;
|
||
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
|
||
}
|
||
|
||
function searchmenu_inputHTML_binding(value) {
|
||
input = value;
|
||
$$invalidate(7, input);
|
||
}
|
||
|
||
function searchmenu_search_binding(value) {
|
||
search = value;
|
||
$$invalidate(3, search);
|
||
}
|
||
|
||
function searchmenu_searchCommandsCount_binding(value) {
|
||
searchCommandsCount = value;
|
||
((((($$invalidate(12, searchCommandsCount), $$invalidate(4, visibleCommands)), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
|
||
}
|
||
|
||
function searchmenu_searchHotkeysCount_binding(value) {
|
||
searchHotkeysCount = value;
|
||
((((($$invalidate(11, searchHotkeysCount), $$invalidate(4, visibleCommands)), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
|
||
}
|
||
|
||
function searchmenu_keyboardListenerIsActive_binding(value) {
|
||
keyboardListenerIsActive = value;
|
||
$$invalidate(8, keyboardListenerIsActive);
|
||
}
|
||
|
||
function searchmenu_FilterSettings_binding(value) {
|
||
if ($$self.$$.not_equal(settings.filterSettings, value)) {
|
||
settings.filterSettings = value;
|
||
$$invalidate(1, settings);
|
||
}
|
||
}
|
||
|
||
function searchmenu_plugin_binding(value) {
|
||
plugin = value;
|
||
$$invalidate(0, plugin);
|
||
}
|
||
|
||
function commandslist_visibleCommands_binding(value) {
|
||
visibleCommands = value;
|
||
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
|
||
}
|
||
|
||
function commandslist_settings_binding(value) {
|
||
settings = value;
|
||
$$invalidate(1, settings);
|
||
}
|
||
|
||
function div2_elementresize_handler() {
|
||
viewWidth = this.offsetWidth;
|
||
$$invalidate(5, viewWidth);
|
||
}
|
||
|
||
const mouseenter_handler = () => {
|
||
app.keymap.pushScope(view_scope);
|
||
};
|
||
|
||
const mouseleave_handler = () => {
|
||
app.keymap.popScope(view_scope);
|
||
};
|
||
|
||
$$self.$$set = $$props => {
|
||
if ('app' in $$props) $$invalidate(2, app = $$props.app);
|
||
if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin);
|
||
if ('settings' in $$props) $$invalidate(1, settings = $$props.settings);
|
||
if ('view' in $$props) $$invalidate(20, view = $$props.view);
|
||
};
|
||
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty[0] & /*commandsArray, search, $activeModifiers, $activeKey*/ 29360136) {
|
||
// REACTIVE PROPERTIES
|
||
$$invalidate(4, visibleCommands = filterCommandsArray(commandsArray, search, $activeModifiers, $activeKey));
|
||
}
|
||
|
||
if ($$self.$$.dirty[0] & /*visibleCommands*/ 16) {
|
||
// COUNTERS
|
||
$$invalidate(12, searchCommandsCount = updateCommandsCount(visibleCommands));
|
||
}
|
||
|
||
if ($$self.$$.dirty[0] & /*visibleCommands*/ 16) {
|
||
$$invalidate(11, searchHotkeysCount = countHotkeys(visibleCommands));
|
||
}
|
||
|
||
if ($$self.$$.dirty[0] & /*app, plugin, settings, view, commands*/ 3145735) ;
|
||
};
|
||
|
||
return [
|
||
plugin,
|
||
settings,
|
||
app,
|
||
search,
|
||
visibleCommands,
|
||
viewWidth,
|
||
viewMode,
|
||
input,
|
||
keyboardListenerIsActive,
|
||
KeyboardObject,
|
||
KeyboardStateDict,
|
||
searchHotkeysCount,
|
||
searchCommandsCount,
|
||
view_scope,
|
||
handlePluginNameClicked,
|
||
handleFeaturedFirstOptionClicked,
|
||
handleDuplicateHotkeyClicked,
|
||
handleStarIconClicked,
|
||
handleRefreshClicked,
|
||
handleResize,
|
||
view,
|
||
commands,
|
||
commandsArray,
|
||
$activeKey,
|
||
$activeModifiers,
|
||
keyboardlayout_KeyboardObject_binding,
|
||
keyboardlayout_KeyboardStateDict_binding,
|
||
keyboardlayout_visibleCommands_binding,
|
||
searchmenu_inputHTML_binding,
|
||
searchmenu_search_binding,
|
||
searchmenu_searchCommandsCount_binding,
|
||
searchmenu_searchHotkeysCount_binding,
|
||
searchmenu_keyboardListenerIsActive_binding,
|
||
searchmenu_FilterSettings_binding,
|
||
searchmenu_plugin_binding,
|
||
commandslist_visibleCommands_binding,
|
||
commandslist_settings_binding,
|
||
div2_elementresize_handler,
|
||
mouseenter_handler,
|
||
mouseleave_handler
|
||
];
|
||
}
|
||
|
||
class KeyboardComponent extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance, create_fragment, safe_not_equal, { app: 2, plugin: 0, settings: 1, view: 20 }, null, [-1, -1]);
|
||
}
|
||
}
|
||
|
||
class ShortcutsView extends obsidian.ItemView {
|
||
constructor(leaf, plugin) {
|
||
super(leaf);
|
||
this.navigation = true;
|
||
this.plugin = plugin;
|
||
}
|
||
onload() {
|
||
const _super = Object.create(null, {
|
||
onload: { get: () => super.onload }
|
||
});
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
_super.onload.call(this);
|
||
});
|
||
}
|
||
getViewType() {
|
||
return VIEW_TYPE_SHORTCUTS_ANALYZER;
|
||
}
|
||
getDisplayText() {
|
||
return 'Keyboard Shortcuts';
|
||
}
|
||
onOpen() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
yield this.draw();
|
||
});
|
||
}
|
||
onClose() {
|
||
return Promise.resolve();
|
||
}
|
||
draw() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
const { app, contentEl } = this;
|
||
const { settings } = this.plugin;
|
||
contentEl.empty();
|
||
contentEl.setAttribute(`id`, `KB-view`);
|
||
contentEl.style.padding = '0';
|
||
this.component = new KeyboardComponent({
|
||
target: contentEl,
|
||
props: {
|
||
app,
|
||
plugin: this.plugin,
|
||
settings,
|
||
view: this,
|
||
},
|
||
});
|
||
});
|
||
}
|
||
}
|
||
|
||
class KeyboardAnalizerPlugin extends obsidian.Plugin {
|
||
get full() {
|
||
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER);
|
||
const leaf = leaves.length ? leaves[0] : null;
|
||
if (leaf && leaf.view && leaf.view instanceof ShortcutsView)
|
||
return leaf.view;
|
||
}
|
||
onload() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
yield this.loadSettings();
|
||
this.registerPluginHotkeys();
|
||
this.addStatusBarIndicator.apply(this);
|
||
this.registerView(VIEW_TYPE_SHORTCUTS_ANALYZER, (leaf) => new ShortcutsView(leaf, this));
|
||
// This adds a settings tab so the user can configure various aspects of the plugin
|
||
// this.addSettingTab(new KeyboardAnalyzerSettingTab(this.app, this))
|
||
});
|
||
}
|
||
onunload() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
this.app.workspace.detachLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER);
|
||
});
|
||
}
|
||
loadSettings() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
this.settings = Object.assign({}, DEFAULT_PLUGIN_SETTINGS, yield this.loadData());
|
||
});
|
||
}
|
||
saveSettings() {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
yield this.saveData(this.settings);
|
||
});
|
||
}
|
||
addStatusBarIndicator() {
|
||
// This adds a status bar item to the bottom of the app. Does not work on mobile apps.
|
||
const statusBarIcon = this.addStatusBarItem();
|
||
statusBarIcon.addClass('mod-clickable');
|
||
statusBarIcon.setAttribute('aria-label', 'Keyboard Shortcuts');
|
||
statusBarIcon.style.order = '10';
|
||
// create the status bar icon
|
||
const icon = statusBarIcon.createSpan('icon');
|
||
// register click handler
|
||
obsidian.setIcon(icon, 'keyboard-glyph'); // inject svg icon
|
||
icon.addEventListener('click', (evt) => this.onStatusBarClick(evt));
|
||
// TODO update view on click
|
||
// TODO update view when commands added or hotkeys changed
|
||
}
|
||
onStatusBarClick(evt) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
if (evt.ctrlKey == true) {
|
||
this.addShortcutsView(true);
|
||
}
|
||
else {
|
||
this.addShortcutsView();
|
||
}
|
||
});
|
||
}
|
||
addShortcutsView(newLeaf = false) {
|
||
return __awaiter(this, void 0, void 0, function* () {
|
||
let checkResult = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER)
|
||
.length === 0;
|
||
if (checkResult) {
|
||
if (newLeaf) {
|
||
this.app.workspace
|
||
.getLeaf(true)
|
||
.setViewState({ type: VIEW_TYPE_SHORTCUTS_ANALYZER });
|
||
}
|
||
else {
|
||
this.app.workspace
|
||
.getLeaf()
|
||
.setViewState({ type: VIEW_TYPE_SHORTCUTS_ANALYZER });
|
||
}
|
||
}
|
||
});
|
||
}
|
||
registerPluginHotkeys() {
|
||
this.addCommand({
|
||
id: 'show-shortcuts-analyzer-view',
|
||
name: 'Open keyboard shortcuts view',
|
||
checkCallback: (checking) => {
|
||
let checkResult = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER)
|
||
.length === 0;
|
||
if (checkResult) {
|
||
// Only perform work when checking is false
|
||
if (!checking) {
|
||
this.addShortcutsView();
|
||
// openView(this.app, VIEW_TYPE_SHORTCUTS_ANALYZER, ShortcutsView)
|
||
}
|
||
return true;
|
||
}
|
||
},
|
||
});
|
||
}
|
||
}
|
||
// class KeyboardAnalyzerSettingTab extends PluginSettingTab {
|
||
// plugin: KeyboardAnalizerPlugin
|
||
// constructor(app: App, plugin: KeyboardAnalizerPlugin) {
|
||
// super(app, plugin)
|
||
// this.plugin = plugin
|
||
// }
|
||
// display(): void {
|
||
// const { containerEl } = this
|
||
// containerEl.empty()
|
||
// containerEl.createEl('h2', { text: 'Settings for my awesome plugin.' })
|
||
// // checkbox for showing status bar item
|
||
// new Setting(containerEl)
|
||
// .setName('Show Status Bar Item')
|
||
// .setDesc('Show the status bar item')
|
||
// .addToggle((checkbox: any) =>
|
||
// checkbox
|
||
// .setChecked(this.plugin.settings.showStatusBarItem)
|
||
// .onChange(async (value: boolean) => {
|
||
// this.plugin.settings.showStatusBarItem = value
|
||
// await this.plugin.saveSettings()
|
||
// })
|
||
// )
|
||
// }
|
||
// }
|
||
|
||
module.exports = KeyboardAnalizerPlugin;
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3QvZmVhdGhlci5qcyIsInNyYy9Db25zdGFudHMudHMiLCJub2RlX21vZHVsZXMvc3ZlbHRlL2ludGVybmFsL2luZGV4Lm1qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvY29sbGVjdGlvbi11dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvZWxlbWVudC11dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvbGlzdGVuZXItaGFuZGxlci5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvaWQtZ2VuZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1oYW5kbGVyLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9yZXBvcnRlci5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvYnJvd3Nlci1kZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9iYXRjaC1wcm9jZXNzb3Ivc3JjL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2JhdGNoLXByb2Nlc3Nvci9zcmMvYmF0Y2gtcHJvY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9zdGF0ZS1oYW5kbGVyLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvc2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUtd2F0Y2gtcmVzaXplL2xpYi9pbmRleC5lcy5qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUvc3RvcmUvaW5kZXgubWpzIiwic3JjL0FwcFNob3J0Y3V0cy50cyIsInNyYy9Db21wb25lbnRzL2FjdGl2ZUtleXNTdG9yZS5qcyIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2RlZmF1bHRBdHRyaWJ1dGVzLmpzIiwibm9kZV9tb2R1bGVzL2x1Y2lkZS1zdmVsdGUvZGlzdC9lc20vSWNvbi5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtZG90LnN2ZWx0ZSIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2ljb25zL2NvZmZlZS5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9maWx0ZXIuc3ZlbHRlIiwibm9kZV9tb2R1bGVzL2x1Y2lkZS1zdmVsdGUvZGlzdC9lc20vaWNvbnMvcmVmcmVzaC1jdy5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9zdGFyLnN2ZWx0ZSIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2ljb25zL3guc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvS2V5Ym9hcmRLZXkuc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvS2V5Ym9hcmRMYXlvdXQuc3ZlbHRlIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9lYXNpbmcvaW5kZXgubWpzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS90cmFuc2l0aW9uL2luZGV4Lm1qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUtdXNlLWNsaWNrLW91dHNpZGUvZGlzdC9pbmRleC5qcyIsInNyYy9Db21wb25lbnRzL2xvbmdwcmVzcy5qcyIsInNyYy9Db21wb25lbnRzL1NlYXJjaE1lbnUuc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvQ29tbWFuZHNMaXN0LnN2ZWx0ZSIsInNyYy9Db21wb25lbnRzL0tleWJvYXJkQ29tcG9uZW50LnN2ZWx0ZSIsInNyYy9TaG9ydGN1dHNWaWV3LnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInRoaXMiLCJ1dGlscyIsImZvckVhY2giLCJyZXF1aXJlJCQwIiwiaWRIYW5kbGVyIiwiaWRHZW5lcmF0b3IiLCJpZEdlbmVyYXRvck1ha2VyIiwiaWRIYW5kbGVyTWFrZXIiLCJyZXBvcnRlciIsInJlcG9ydGVyTWFrZXIiLCJiYXRjaFByb2Nlc3NvciIsImJhdGNoUHJvY2Vzc29yTWFrZXIiLCJsaXN0ZW5lckhhbmRsZXJNYWtlciIsImVsZW1lbnRVdGlscyIsImVsZW1lbnRVdGlsc01ha2VyIiwic2Nyb2xsU3RyYXRlZ3lNYWtlciIsIm9iamVjdFN0cmF0ZWd5TWFrZXIiLCJlbGVtZW50UmVzaXplRGV0ZWN0b3JNYWtlciIsIlBsYXRmb3JtIiwiY3JlYXRlX2lmX2Jsb2NrIiwibGluZWFyIiwiY3JlYXRlX2lmX2Jsb2NrXzEiLCJTY29wZSIsIkl0ZW1WaWV3IiwiUGx1Z2luIiwic2V0SWNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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QyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8s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S0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWCxRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsUUFBUTtBQUNiLFFBQUEsSUFBSSxFQUFFLFNBQVM7QUFDZixRQUFBLE9BQU8sRUFBRSxLQUFLO0FBQ2YsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsUUFBUTtBQUNiLFFBQUEsSUFBSSxFQUFFLGVBQWU7QUFDckIsUUFBQSxPQUFPLEVBQUUsS0FBSztBQUNmLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFFRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2YsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTs7Ozs7QUFLRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxVQUFVO0FBQ2pCLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLGFBQWE7QUFDbEIsUUFBQSxJQUFJLEVBQUUsYUFBYTtBQUNwQixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZUFBZTtBQUN0QixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3ZCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxlQUFlO0FBQ3RCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFH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
|